diff options
Diffstat (limited to 'thirdparty/raspberrypi/includes/opencv2/stitching')
13 files changed, 0 insertions, 2949 deletions
diff --git a/thirdparty/raspberrypi/includes/opencv2/stitching/detail/autocalib.hpp b/thirdparty/raspberrypi/includes/opencv2/stitching/detail/autocalib.hpp deleted file mode 100644 index feb5349..0000000 --- a/thirdparty/raspberrypi/includes/opencv2/stitching/detail/autocalib.hpp +++ /dev/null @@ -1,65 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#ifndef __OPENCV_STITCHING_AUTOCALIB_HPP__ -#define __OPENCV_STITCHING_AUTOCALIB_HPP__ - -#include "opencv2/core/core.hpp" -#include "matchers.hpp" - -namespace cv { -namespace detail { - -// See "Construction of Panoramic Image Mosaics with Global and Local Alignment" -// by Heung-Yeung Shum and Richard Szeliski. -void CV_EXPORTS focalsFromHomography(const Mat &H, double &f0, double &f1, bool &f0_ok, bool &f1_ok); - -void CV_EXPORTS estimateFocal(const std::vector<ImageFeatures> &features, - const std::vector<MatchesInfo> &pairwise_matches, - std::vector<double> &focals); - -bool CV_EXPORTS calibrateRotatingCamera(const std::vector<Mat> &Hs, Mat &K); - -} // namespace detail -} // namespace cv - -#endif // __OPENCV_STITCHING_AUTOCALIB_HPP__ diff --git a/thirdparty/raspberrypi/includes/opencv2/stitching/detail/blenders.hpp b/thirdparty/raspberrypi/includes/opencv2/stitching/detail/blenders.hpp deleted file mode 100644 index bd93a71..0000000 --- a/thirdparty/raspberrypi/includes/opencv2/stitching/detail/blenders.hpp +++ /dev/null @@ -1,137 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#ifndef __OPENCV_STITCHING_BLENDERS_HPP__ -#define __OPENCV_STITCHING_BLENDERS_HPP__ - -#include "opencv2/core/core.hpp" - -namespace cv { -namespace detail { - - -// Simple blender which puts one image over another -class CV_EXPORTS Blender -{ -public: - virtual ~Blender() {} - - enum { NO, FEATHER, MULTI_BAND }; - static Ptr<Blender> createDefault(int type, bool try_gpu = false); - - void prepare(const std::vector<Point> &corners, const std::vector<Size> &sizes); - virtual void prepare(Rect dst_roi); - virtual void feed(const Mat &img, const Mat &mask, Point tl); - virtual void blend(Mat &dst, Mat &dst_mask); - -protected: - Mat dst_, dst_mask_; - Rect dst_roi_; -}; - - -class CV_EXPORTS FeatherBlender : public Blender -{ -public: - FeatherBlender(float sharpness = 0.02f); - - float sharpness() const { return sharpness_; } - void setSharpness(float val) { sharpness_ = val; } - - void prepare(Rect dst_roi); - void feed(const Mat &img, const Mat &mask, Point tl); - void blend(Mat &dst, Mat &dst_mask); - - // Creates weight maps for fixed set of source images by their masks and top-left corners. - // Final image can be obtained by simple weighting of the source images. - Rect createWeightMaps(const std::vector<Mat> &masks, const std::vector<Point> &corners, - std::vector<Mat> &weight_maps); - -private: - float sharpness_; - Mat weight_map_; - Mat dst_weight_map_; -}; - -inline FeatherBlender::FeatherBlender(float _sharpness) { setSharpness(_sharpness); } - - -class CV_EXPORTS MultiBandBlender : public Blender -{ -public: - MultiBandBlender(int try_gpu = false, int num_bands = 5, int weight_type = CV_32F); - - int numBands() const { return actual_num_bands_; } - void setNumBands(int val) { actual_num_bands_ = val; } - - void prepare(Rect dst_roi); - void feed(const Mat &img, const Mat &mask, Point tl); - void blend(Mat &dst, Mat &dst_mask); - -private: - int actual_num_bands_, num_bands_; - std::vector<Mat> dst_pyr_laplace_; - std::vector<Mat> dst_band_weights_; - Rect dst_roi_final_; - bool can_use_gpu_; - int weight_type_; //CV_32F or CV_16S -}; - - -////////////////////////////////////////////////////////////////////////////// -// Auxiliary functions - -void CV_EXPORTS normalizeUsingWeightMap(const Mat& weight, Mat& src); - -void CV_EXPORTS createWeightMap(const Mat& mask, float sharpness, Mat& weight); - -void CV_EXPORTS createLaplacePyr(const Mat &img, int num_levels, std::vector<Mat>& pyr); -void CV_EXPORTS createLaplacePyrGpu(const Mat &img, int num_levels, std::vector<Mat>& pyr); - -// Restores source image -void CV_EXPORTS restoreImageFromLaplacePyr(std::vector<Mat>& pyr); -void CV_EXPORTS restoreImageFromLaplacePyrGpu(std::vector<Mat>& pyr); - -} // namespace detail -} // namespace cv - -#endif // __OPENCV_STITCHING_BLENDERS_HPP__ diff --git a/thirdparty/raspberrypi/includes/opencv2/stitching/detail/camera.hpp b/thirdparty/raspberrypi/includes/opencv2/stitching/detail/camera.hpp deleted file mode 100644 index a74abcb..0000000 --- a/thirdparty/raspberrypi/includes/opencv2/stitching/detail/camera.hpp +++ /dev/null @@ -1,69 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#ifndef __OPENCV_STITCHING_CAMERA_HPP__ -#define __OPENCV_STITCHING_CAMERA_HPP__ - -#include "opencv2/core/core.hpp" - -namespace cv { -namespace detail { - -struct CV_EXPORTS CameraParams -{ - CameraParams(); - CameraParams(const CameraParams& other); - const CameraParams& operator =(const CameraParams& other); - Mat K() const; - - double focal; // Focal length - double aspect; // Aspect ratio - double ppx; // Principal point X - double ppy; // Principal point Y - Mat R; // Rotation - Mat t; // Translation -}; - -} // namespace detail -} // namespace cv - -#endif // #ifndef __OPENCV_STITCHING_CAMERA_HPP__ diff --git a/thirdparty/raspberrypi/includes/opencv2/stitching/detail/exposure_compensate.hpp b/thirdparty/raspberrypi/includes/opencv2/stitching/detail/exposure_compensate.hpp deleted file mode 100644 index 49676fe..0000000 --- a/thirdparty/raspberrypi/includes/opencv2/stitching/detail/exposure_compensate.hpp +++ /dev/null @@ -1,106 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#ifndef __OPENCV_STITCHING_EXPOSURE_COMPENSATE_HPP__ -#define __OPENCV_STITCHING_EXPOSURE_COMPENSATE_HPP__ - -#include "opencv2/core/core.hpp" - -namespace cv { -namespace detail { - -class CV_EXPORTS ExposureCompensator -{ -public: - virtual ~ExposureCompensator() {} - - enum { NO, GAIN, GAIN_BLOCKS }; - static Ptr<ExposureCompensator> createDefault(int type); - - void feed(const std::vector<Point> &corners, const std::vector<Mat> &images, - const std::vector<Mat> &masks); - virtual void feed(const std::vector<Point> &corners, const std::vector<Mat> &images, - const std::vector<std::pair<Mat,uchar> > &masks) = 0; - virtual void apply(int index, Point corner, Mat &image, const Mat &mask) = 0; -}; - - -class CV_EXPORTS NoExposureCompensator : public ExposureCompensator -{ -public: - void feed(const std::vector<Point> &/*corners*/, const std::vector<Mat> &/*images*/, - const std::vector<std::pair<Mat,uchar> > &/*masks*/) {}; - void apply(int /*index*/, Point /*corner*/, Mat &/*image*/, const Mat &/*mask*/) {}; -}; - - -class CV_EXPORTS GainCompensator : public ExposureCompensator -{ -public: - void feed(const std::vector<Point> &corners, const std::vector<Mat> &images, - const std::vector<std::pair<Mat,uchar> > &masks); - void apply(int index, Point corner, Mat &image, const Mat &mask); - std::vector<double> gains() const; - -private: - Mat_<double> gains_; -}; - - -class CV_EXPORTS BlocksGainCompensator : public ExposureCompensator -{ -public: - BlocksGainCompensator(int bl_width = 32, int bl_height = 32) - : bl_width_(bl_width), bl_height_(bl_height) {} - void feed(const std::vector<Point> &corners, const std::vector<Mat> &images, - const std::vector<std::pair<Mat,uchar> > &masks); - void apply(int index, Point corner, Mat &image, const Mat &mask); - -private: - int bl_width_, bl_height_; - std::vector<Mat_<float> > gain_maps_; -}; - -} // namespace detail -} // namespace cv - -#endif // __OPENCV_STITCHING_EXPOSURE_COMPENSATE_HPP__ diff --git a/thirdparty/raspberrypi/includes/opencv2/stitching/detail/matchers.hpp b/thirdparty/raspberrypi/includes/opencv2/stitching/detail/matchers.hpp deleted file mode 100644 index f319df1..0000000 --- a/thirdparty/raspberrypi/includes/opencv2/stitching/detail/matchers.hpp +++ /dev/null @@ -1,192 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#ifndef __OPENCV_STITCHING_MATCHERS_HPP__ -#define __OPENCV_STITCHING_MATCHERS_HPP__ - -#include "opencv2/core/core.hpp" -#include "opencv2/core/gpumat.hpp" -#include "opencv2/features2d/features2d.hpp" - -#include "opencv2/opencv_modules.hpp" - -#if defined(HAVE_OPENCV_NONFREE) - #include "opencv2/nonfree/gpu.hpp" -#endif - -namespace cv { -namespace detail { - -struct CV_EXPORTS ImageFeatures -{ - int img_idx; - Size img_size; - std::vector<KeyPoint> keypoints; - Mat descriptors; -}; - - -class CV_EXPORTS FeaturesFinder -{ -public: - virtual ~FeaturesFinder() {} - void operator ()(const Mat &image, ImageFeatures &features); - void operator ()(const Mat &image, ImageFeatures &features, const std::vector<cv::Rect> &rois); - virtual void collectGarbage() {} - -protected: - virtual void find(const Mat &image, ImageFeatures &features) = 0; -}; - - -class CV_EXPORTS SurfFeaturesFinder : public FeaturesFinder -{ -public: - SurfFeaturesFinder(double hess_thresh = 300., int num_octaves = 3, int num_layers = 4, - int num_octaves_descr = /*4*/3, int num_layers_descr = /*2*/4); - -private: - void find(const Mat &image, ImageFeatures &features); - - Ptr<FeatureDetector> detector_; - Ptr<DescriptorExtractor> extractor_; - Ptr<Feature2D> surf; -}; - -class CV_EXPORTS OrbFeaturesFinder : public FeaturesFinder -{ -public: - OrbFeaturesFinder(Size _grid_size = Size(3,1), int nfeatures=1500, float scaleFactor=1.3f, int nlevels=5); - -private: - void find(const Mat &image, ImageFeatures &features); - - Ptr<ORB> orb; - Size grid_size; -}; - - -#if defined(HAVE_OPENCV_NONFREE) -class CV_EXPORTS SurfFeaturesFinderGpu : public FeaturesFinder -{ -public: - SurfFeaturesFinderGpu(double hess_thresh = 300., int num_octaves = 3, int num_layers = 4, - int num_octaves_descr = 4, int num_layers_descr = 2); - - void collectGarbage(); - -private: - void find(const Mat &image, ImageFeatures &features); - - gpu::GpuMat image_; - gpu::GpuMat gray_image_; - gpu::SURF_GPU surf_; - gpu::GpuMat keypoints_; - gpu::GpuMat descriptors_; -#if defined(HAVE_OPENCV_GPU) && !defined(DYNAMIC_CUDA_SUPPORT) - int num_octaves_, num_layers_; - int num_octaves_descr_, num_layers_descr_; -#endif -}; -#endif - - -struct CV_EXPORTS MatchesInfo -{ - MatchesInfo(); - MatchesInfo(const MatchesInfo &other); - const MatchesInfo& operator =(const MatchesInfo &other); - - int src_img_idx, dst_img_idx; // Images indices (optional) - std::vector<DMatch> matches; - std::vector<uchar> inliers_mask; // Geometrically consistent matches mask - int num_inliers; // Number of geometrically consistent matches - Mat H; // Estimated homography - double confidence; // Confidence two images are from the same panorama -}; - - -class CV_EXPORTS FeaturesMatcher -{ -public: - virtual ~FeaturesMatcher() {} - - void operator ()(const ImageFeatures &features1, const ImageFeatures &features2, - MatchesInfo& matches_info) { match(features1, features2, matches_info); } - - void operator ()(const std::vector<ImageFeatures> &features, std::vector<MatchesInfo> &pairwise_matches, - const cv::Mat &mask = cv::Mat()); - - bool isThreadSafe() const { return is_thread_safe_; } - - virtual void collectGarbage() {} - -protected: - FeaturesMatcher(bool is_thread_safe = false) : is_thread_safe_(is_thread_safe) {} - - virtual void match(const ImageFeatures &features1, const ImageFeatures &features2, - MatchesInfo& matches_info) = 0; - - bool is_thread_safe_; -}; - - -class CV_EXPORTS BestOf2NearestMatcher : public FeaturesMatcher -{ -public: - BestOf2NearestMatcher(bool try_use_gpu = false, float match_conf = 0.3f, int num_matches_thresh1 = 6, - int num_matches_thresh2 = 6); - - void collectGarbage(); - -protected: - void match(const ImageFeatures &features1, const ImageFeatures &features2, MatchesInfo &matches_info); - - int num_matches_thresh1_; - int num_matches_thresh2_; - Ptr<FeaturesMatcher> impl_; -}; - -} // namespace detail -} // namespace cv - -#endif // __OPENCV_STITCHING_MATCHERS_HPP__ diff --git a/thirdparty/raspberrypi/includes/opencv2/stitching/detail/motion_estimators.hpp b/thirdparty/raspberrypi/includes/opencv2/stitching/detail/motion_estimators.hpp deleted file mode 100644 index 9ae1102..0000000 --- a/thirdparty/raspberrypi/includes/opencv2/stitching/detail/motion_estimators.hpp +++ /dev/null @@ -1,205 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#ifndef __OPENCV_STITCHING_MOTION_ESTIMATORS_HPP__ -#define __OPENCV_STITCHING_MOTION_ESTIMATORS_HPP__ - -#include "opencv2/core/core.hpp" -#include "matchers.hpp" -#include "util.hpp" -#include "camera.hpp" - -namespace cv { -namespace detail { - -class CV_EXPORTS Estimator -{ -public: - virtual ~Estimator() {} - - void operator ()(const std::vector<ImageFeatures> &features, const std::vector<MatchesInfo> &pairwise_matches, - std::vector<CameraParams> &cameras) - { estimate(features, pairwise_matches, cameras); } - -protected: - virtual void estimate(const std::vector<ImageFeatures> &features, const std::vector<MatchesInfo> &pairwise_matches, - std::vector<CameraParams> &cameras) = 0; -}; - - -class CV_EXPORTS HomographyBasedEstimator : public Estimator -{ -public: - HomographyBasedEstimator(bool is_focals_estimated = false) - : is_focals_estimated_(is_focals_estimated) {} - -private: - void estimate(const std::vector<ImageFeatures> &features, const std::vector<MatchesInfo> &pairwise_matches, - std::vector<CameraParams> &cameras); - - bool is_focals_estimated_; -}; - - -class CV_EXPORTS BundleAdjusterBase : public Estimator -{ -public: - const Mat refinementMask() const { return refinement_mask_.clone(); } - void setRefinementMask(const Mat &mask) - { - CV_Assert(mask.type() == CV_8U && mask.size() == Size(3, 3)); - refinement_mask_ = mask.clone(); - } - - double confThresh() const { return conf_thresh_; } - void setConfThresh(double conf_thresh) { conf_thresh_ = conf_thresh; } - - CvTermCriteria termCriteria() { return term_criteria_; } - void setTermCriteria(const CvTermCriteria& term_criteria) { term_criteria_ = term_criteria; } - -protected: - BundleAdjusterBase(int num_params_per_cam, int num_errs_per_measurement) - : num_params_per_cam_(num_params_per_cam), - num_errs_per_measurement_(num_errs_per_measurement) - { - setRefinementMask(Mat::ones(3, 3, CV_8U)); - setConfThresh(1.); - setTermCriteria(cvTermCriteria(CV_TERMCRIT_EPS + CV_TERMCRIT_ITER, 1000, DBL_EPSILON)); - } - - // Runs bundle adjustment - virtual void estimate(const std::vector<ImageFeatures> &features, - const std::vector<MatchesInfo> &pairwise_matches, - std::vector<CameraParams> &cameras); - - virtual void setUpInitialCameraParams(const std::vector<CameraParams> &cameras) = 0; - virtual void obtainRefinedCameraParams(std::vector<CameraParams> &cameras) const = 0; - virtual void calcError(Mat &err) = 0; - virtual void calcJacobian(Mat &jac) = 0; - - // 3x3 8U mask, where 0 means don't refine respective parameter, != 0 means refine - Mat refinement_mask_; - - int num_images_; - int total_num_matches_; - - int num_params_per_cam_; - int num_errs_per_measurement_; - - const ImageFeatures *features_; - const MatchesInfo *pairwise_matches_; - - // Threshold to filter out poorly matched image pairs - double conf_thresh_; - - //Levenberg–Marquardt algorithm termination criteria - CvTermCriteria term_criteria_; - - // Camera parameters matrix (CV_64F) - Mat cam_params_; - - // Connected images pairs - std::vector<std::pair<int,int> > edges_; -}; - - -// Minimizes reprojection error. -// It can estimate focal length, aspect ratio, principal point. -// You can affect only on them via the refinement mask. -class CV_EXPORTS BundleAdjusterReproj : public BundleAdjusterBase -{ -public: - BundleAdjusterReproj() : BundleAdjusterBase(7, 2) {} - -private: - void setUpInitialCameraParams(const std::vector<CameraParams> &cameras); - void obtainRefinedCameraParams(std::vector<CameraParams> &cameras) const; - void calcError(Mat &err); - void calcJacobian(Mat &jac); - - Mat err1_, err2_; -}; - - -// Minimizes sun of ray-to-ray distances. -// It can estimate focal length. It ignores the refinement mask for now. -class CV_EXPORTS BundleAdjusterRay : public BundleAdjusterBase -{ -public: - BundleAdjusterRay() : BundleAdjusterBase(4, 3) {} - -private: - void setUpInitialCameraParams(const std::vector<CameraParams> &cameras); - void obtainRefinedCameraParams(std::vector<CameraParams> &cameras) const; - void calcError(Mat &err); - void calcJacobian(Mat &jac); - - Mat err1_, err2_; -}; - - -enum WaveCorrectKind -{ - WAVE_CORRECT_HORIZ, - WAVE_CORRECT_VERT -}; - -void CV_EXPORTS waveCorrect(std::vector<Mat> &rmats, WaveCorrectKind kind); - - -////////////////////////////////////////////////////////////////////////////// -// Auxiliary functions - -// Returns matches graph representation in DOT language -std::string CV_EXPORTS matchesGraphAsString(std::vector<std::string> &pathes, std::vector<MatchesInfo> &pairwise_matches, - float conf_threshold); - -std::vector<int> CV_EXPORTS leaveBiggestComponent(std::vector<ImageFeatures> &features, std::vector<MatchesInfo> &pairwise_matches, - float conf_threshold); - -void CV_EXPORTS findMaxSpanningTree(int num_images, const std::vector<MatchesInfo> &pairwise_matches, - Graph &span_tree, std::vector<int> ¢ers); - -} // namespace detail -} // namespace cv - -#endif // __OPENCV_STITCHING_MOTION_ESTIMATORS_HPP__ diff --git a/thirdparty/raspberrypi/includes/opencv2/stitching/detail/seam_finders.hpp b/thirdparty/raspberrypi/includes/opencv2/stitching/detail/seam_finders.hpp deleted file mode 100644 index 5b1d5d9..0000000 --- a/thirdparty/raspberrypi/includes/opencv2/stitching/detail/seam_finders.hpp +++ /dev/null @@ -1,267 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#ifndef __OPENCV_STITCHING_SEAM_FINDERS_HPP__ -#define __OPENCV_STITCHING_SEAM_FINDERS_HPP__ - -#include <set> -#include "opencv2/core/core.hpp" -#include "opencv2/core/gpumat.hpp" - -namespace cv { -namespace detail { - -class CV_EXPORTS SeamFinder -{ -public: - virtual ~SeamFinder() {} - virtual void find(const std::vector<Mat> &src, const std::vector<Point> &corners, - std::vector<Mat> &masks) = 0; -}; - - -class CV_EXPORTS NoSeamFinder : public SeamFinder -{ -public: - void find(const std::vector<Mat>&, const std::vector<Point>&, std::vector<Mat>&) {} -}; - - -class CV_EXPORTS PairwiseSeamFinder : public SeamFinder -{ -public: - virtual void find(const std::vector<Mat> &src, const std::vector<Point> &corners, - std::vector<Mat> &masks); - -protected: - void run(); - virtual void findInPair(size_t first, size_t second, Rect roi) = 0; - - std::vector<Mat> images_; - std::vector<Size> sizes_; - std::vector<Point> corners_; - std::vector<Mat> masks_; -}; - - -class CV_EXPORTS VoronoiSeamFinder : public PairwiseSeamFinder -{ -public: - virtual void find(const std::vector<Size> &size, const std::vector<Point> &corners, - std::vector<Mat> &masks); -private: - void findInPair(size_t first, size_t second, Rect roi); -}; - - -class CV_EXPORTS DpSeamFinder : public SeamFinder -{ -public: - enum CostFunction { COLOR, COLOR_GRAD }; - - DpSeamFinder(CostFunction costFunc = COLOR); - - CostFunction costFunction() const { return costFunc_; } - void setCostFunction(CostFunction val) { costFunc_ = val; } - - virtual void find(const std::vector<Mat> &src, const std::vector<Point> &corners, - std::vector<Mat> &masks); - -private: - enum ComponentState - { - FIRST = 1, SECOND = 2, INTERS = 4, - INTERS_FIRST = INTERS | FIRST, - INTERS_SECOND = INTERS | SECOND - }; - - class ImagePairLess - { - public: - ImagePairLess(const std::vector<Mat> &images, const std::vector<Point> &corners) - : src_(&images[0]), corners_(&corners[0]) {} - - bool operator() (const std::pair<size_t, size_t> &l, const std::pair<size_t, size_t> &r) const - { - Point c1 = corners_[l.first] + Point(src_[l.first].cols / 2, src_[l.first].rows / 2); - Point c2 = corners_[l.second] + Point(src_[l.second].cols / 2, src_[l.second].rows / 2); - int d1 = (c1 - c2).dot(c1 - c2); - - c1 = corners_[r.first] + Point(src_[r.first].cols / 2, src_[r.first].rows / 2); - c2 = corners_[r.second] + Point(src_[r.second].cols / 2, src_[r.second].rows / 2); - int d2 = (c1 - c2).dot(c1 - c2); - - return d1 < d2; - } - - private: - const Mat *src_; - const Point *corners_; - }; - - class ClosePoints - { - public: - ClosePoints(int minDist) : minDist_(minDist) {} - - bool operator() (const Point &p1, const Point &p2) const - { - int dist2 = (p1.x-p2.x) * (p1.x-p2.x) + (p1.y-p2.y) * (p1.y-p2.y); - return dist2 < minDist_ * minDist_; - } - - private: - int minDist_; - }; - - void process( - const Mat &image1, const Mat &image2, Point tl1, Point tl2, Mat &mask1, Mat &mask2); - - void findComponents(); - - void findEdges(); - - void resolveConflicts( - const Mat &image1, const Mat &image2, Point tl1, Point tl2, Mat &mask1, Mat &mask2); - - void computeGradients(const Mat &image1, const Mat &image2); - - bool hasOnlyOneNeighbor(int comp); - - bool closeToContour(int y, int x, const Mat_<uchar> &contourMask); - - bool getSeamTips(int comp1, int comp2, Point &p1, Point &p2); - - void computeCosts( - const Mat &image1, const Mat &image2, Point tl1, Point tl2, - int comp, Mat_<float> &costV, Mat_<float> &costH); - - bool estimateSeam( - const Mat &image1, const Mat &image2, Point tl1, Point tl2, int comp, - Point p1, Point p2, std::vector<Point> &seam, bool &isHorizontal); - - void updateLabelsUsingSeam( - int comp1, int comp2, const std::vector<Point> &seam, bool isHorizontalSeam); - - CostFunction costFunc_; - - // processing images pair data - Point unionTl_, unionBr_; - Size unionSize_; - Mat_<uchar> mask1_, mask2_; - Mat_<uchar> contour1mask_, contour2mask_; - Mat_<float> gradx1_, grady1_; - Mat_<float> gradx2_, grady2_; - - // components data - int ncomps_; - Mat_<int> labels_; - std::vector<ComponentState> states_; - std::vector<Point> tls_, brs_; - std::vector<std::vector<Point> > contours_; - std::set<std::pair<int, int> > edges_; -}; - - -class CV_EXPORTS GraphCutSeamFinderBase -{ -public: - enum { COST_COLOR, COST_COLOR_GRAD }; -}; - - -class CV_EXPORTS GraphCutSeamFinder : public GraphCutSeamFinderBase, public SeamFinder -{ -public: - GraphCutSeamFinder(int cost_type = COST_COLOR_GRAD, float terminal_cost = 10000.f, - float bad_region_penalty = 1000.f); - - ~GraphCutSeamFinder(); - - void find(const std::vector<Mat> &src, const std::vector<Point> &corners, - std::vector<Mat> &masks); - -private: - // To avoid GCGraph dependency - class Impl; - Ptr<PairwiseSeamFinder> impl_; -}; - - -class CV_EXPORTS GraphCutSeamFinderGpu : public GraphCutSeamFinderBase, public PairwiseSeamFinder -{ -public: - GraphCutSeamFinderGpu(int cost_type = COST_COLOR_GRAD, float terminal_cost = 10000.f, - float bad_region_penalty = 1000.f) -#if defined(HAVE_OPENCV_GPU) && !defined(DYNAMIC_CUDA_SUPPORT) - : cost_type_(cost_type), - terminal_cost_(terminal_cost), - bad_region_penalty_(bad_region_penalty) -#endif - { - (void)cost_type; - (void)terminal_cost; - (void)bad_region_penalty; - } - - void find(const std::vector<cv::Mat> &src, const std::vector<cv::Point> &corners, - std::vector<cv::Mat> &masks); - void findInPair(size_t first, size_t second, Rect roi); - -private: - void setGraphWeightsColor(const cv::Mat &img1, const cv::Mat &img2, const cv::Mat &mask1, const cv::Mat &mask2, - cv::Mat &terminals, cv::Mat &leftT, cv::Mat &rightT, cv::Mat &top, cv::Mat &bottom); - void setGraphWeightsColorGrad(const cv::Mat &img1, const cv::Mat &img2, const cv::Mat &dx1, const cv::Mat &dx2, - const cv::Mat &dy1, const cv::Mat &dy2, const cv::Mat &mask1, const cv::Mat &mask2, - cv::Mat &terminals, cv::Mat &leftT, cv::Mat &rightT, cv::Mat &top, cv::Mat &bottom); - std::vector<Mat> dx_, dy_; -#if defined(HAVE_OPENCV_GPU) && !defined(DYNAMIC_CUDA_SUPPORT) - int cost_type_; - float terminal_cost_; - float bad_region_penalty_; -#endif -}; - -} // namespace detail -} // namespace cv - -#endif // __OPENCV_STITCHING_SEAM_FINDERS_HPP__ diff --git a/thirdparty/raspberrypi/includes/opencv2/stitching/detail/util.hpp b/thirdparty/raspberrypi/includes/opencv2/stitching/detail/util.hpp deleted file mode 100644 index a8ba816..0000000 --- a/thirdparty/raspberrypi/includes/opencv2/stitching/detail/util.hpp +++ /dev/null @@ -1,162 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#ifndef __OPENCV_STITCHING_UTIL_HPP__ -#define __OPENCV_STITCHING_UTIL_HPP__ - -#include <list> -#include "opencv2/core/core.hpp" - -#define ENABLE_LOG 0 - -// TODO remove LOG macros, add logging class -#if ENABLE_LOG -#ifdef ANDROID - #include <iostream> - #include <sstream> - #include <android/log.h> - #define LOG_STITCHING_MSG(msg) \ - do { \ - std::stringstream _os; \ - _os << msg; \ - __android_log_print(ANDROID_LOG_DEBUG, "STITCHING", "%s", _os.str().c_str()); \ - } while(0); -#else - #include <iostream> - #define LOG_STITCHING_MSG(msg) for(;;) { std::cout << msg; std::cout.flush(); break; } -#endif -#else - #define LOG_STITCHING_MSG(msg) -#endif - -#define LOG_(_level, _msg) \ - for(;;) \ - { \ - if ((_level) >= ::cv::detail::stitchingLogLevel()) \ - { \ - LOG_STITCHING_MSG(_msg); \ - } \ - break; \ - } - - -#define LOG(msg) LOG_(1, msg) -#define LOG_CHAT(msg) LOG_(0, msg) - -#define LOGLN(msg) LOG(msg << std::endl) -#define LOGLN_CHAT(msg) LOG_CHAT(msg << std::endl) - -//#if DEBUG_LOG_CHAT -// #define LOG_CHAT(msg) LOG(msg) -// #define LOGLN_CHAT(msg) LOGLN(msg) -//#else -// #define LOG_CHAT(msg) do{}while(0) -// #define LOGLN_CHAT(msg) do{}while(0) -//#endif - -namespace cv { -namespace detail { - -class CV_EXPORTS DisjointSets -{ -public: - DisjointSets(int elem_count = 0) { createOneElemSets(elem_count); } - - void createOneElemSets(int elem_count); - int findSetByElem(int elem); - int mergeSets(int set1, int set2); - - std::vector<int> parent; - std::vector<int> size; - -private: - std::vector<int> rank_; -}; - - -struct CV_EXPORTS GraphEdge -{ - GraphEdge(int from, int to, float weight); - bool operator <(const GraphEdge& other) const { return weight < other.weight; } - bool operator >(const GraphEdge& other) const { return weight > other.weight; } - - int from, to; - float weight; -}; - -inline GraphEdge::GraphEdge(int _from, int _to, float _weight) : from(_from), to(_to), weight(_weight) {} - - -class CV_EXPORTS Graph -{ -public: - Graph(int num_vertices = 0) { create(num_vertices); } - void create(int num_vertices) { edges_.assign(num_vertices, std::list<GraphEdge>()); } - int numVertices() const { return static_cast<int>(edges_.size()); } - void addEdge(int from, int to, float weight); - template <typename B> B forEach(B body) const; - template <typename B> B walkBreadthFirst(int from, B body) const; - -private: - std::vector< std::list<GraphEdge> > edges_; -}; - - -////////////////////////////////////////////////////////////////////////////// -// Auxiliary functions - -CV_EXPORTS bool overlapRoi(Point tl1, Point tl2, Size sz1, Size sz2, Rect &roi); -CV_EXPORTS Rect resultRoi(const std::vector<Point> &corners, const std::vector<Mat> &images); -CV_EXPORTS Rect resultRoi(const std::vector<Point> &corners, const std::vector<Size> &sizes); -CV_EXPORTS Point resultTl(const std::vector<Point> &corners); - -// Returns random 'count' element subset of the {0,1,...,size-1} set -CV_EXPORTS void selectRandomSubset(int count, int size, std::vector<int> &subset); - -CV_EXPORTS int& stitchingLogLevel(); - -} // namespace detail -} // namespace cv - -#include "util_inl.hpp" - -#endif // __OPENCV_STITCHING_UTIL_HPP__ diff --git a/thirdparty/raspberrypi/includes/opencv2/stitching/detail/util_inl.hpp b/thirdparty/raspberrypi/includes/opencv2/stitching/detail/util_inl.hpp deleted file mode 100644 index ab5d94b..0000000 --- a/thirdparty/raspberrypi/includes/opencv2/stitching/detail/util_inl.hpp +++ /dev/null @@ -1,127 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#ifndef __OPENCV_STITCHING_UTIL_INL_HPP__ -#define __OPENCV_STITCHING_UTIL_INL_HPP__ - -#include <queue> -#include "opencv2/core/core.hpp" -#include "util.hpp" // Make your IDE see declarations - -namespace cv { -namespace detail { - -template <typename B> -B Graph::forEach(B body) const -{ - for (int i = 0; i < numVertices(); ++i) - { - std::list<GraphEdge>::const_iterator edge = edges_[i].begin(); - for (; edge != edges_[i].end(); ++edge) - body(*edge); - } - return body; -} - - -template <typename B> -B Graph::walkBreadthFirst(int from, B body) const -{ - std::vector<bool> was(numVertices(), false); - std::queue<int> vertices; - - was[from] = true; - vertices.push(from); - - while (!vertices.empty()) - { - int vertex = vertices.front(); - vertices.pop(); - - std::list<GraphEdge>::const_iterator edge = edges_[vertex].begin(); - for (; edge != edges_[vertex].end(); ++edge) - { - if (!was[edge->to]) - { - body(*edge); - was[edge->to] = true; - vertices.push(edge->to); - } - } - } - - return body; -} - - -////////////////////////////////////////////////////////////////////////////// -// Some auxiliary math functions - -static inline -float normL2(const Point3f& a) -{ - return a.x * a.x + a.y * a.y + a.z * a.z; -} - - -static inline -float normL2(const Point3f& a, const Point3f& b) -{ - return normL2(a - b); -} - - -static inline -double normL2sq(const Mat &r) -{ - return r.dot(r); -} - - -static inline int sqr(int x) { return x * x; } -static inline float sqr(float x) { return x * x; } -static inline double sqr(double x) { return x * x; } - -} // namespace detail -} // namespace cv - -#endif // __OPENCV_STITCHING_UTIL_INL_HPP__ diff --git a/thirdparty/raspberrypi/includes/opencv2/stitching/detail/warpers.hpp b/thirdparty/raspberrypi/includes/opencv2/stitching/detail/warpers.hpp deleted file mode 100644 index 60d5e54..0000000 --- a/thirdparty/raspberrypi/includes/opencv2/stitching/detail/warpers.hpp +++ /dev/null @@ -1,510 +0,0 @@ - /*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#ifndef __OPENCV_STITCHING_WARPERS_HPP__ -#define __OPENCV_STITCHING_WARPERS_HPP__ - -#include "opencv2/core/core.hpp" -#include "opencv2/core/gpumat.hpp" -#include "opencv2/imgproc/imgproc.hpp" - -namespace cv { -namespace detail { - -class CV_EXPORTS RotationWarper -{ -public: - virtual ~RotationWarper() {} - - virtual Point2f warpPoint(const Point2f &pt, const Mat &K, const Mat &R) = 0; - - virtual Rect buildMaps(Size src_size, const Mat &K, const Mat &R, Mat &xmap, Mat &ymap) = 0; - - virtual Point warp(const Mat &src, const Mat &K, const Mat &R, int interp_mode, int border_mode, - Mat &dst) = 0; - - virtual void warpBackward(const Mat &src, const Mat &K, const Mat &R, int interp_mode, int border_mode, - Size dst_size, Mat &dst) = 0; - - virtual Rect warpRoi(Size src_size, const Mat &K, const Mat &R) = 0; - - float getScale() const { return 1.f; } - void setScale(float) {} -}; - - -struct CV_EXPORTS ProjectorBase -{ - void setCameraParams(const Mat &K = Mat::eye(3, 3, CV_32F), - const Mat &R = Mat::eye(3, 3, CV_32F), - const Mat &T = Mat::zeros(3, 1, CV_32F)); - - float scale; - float k[9]; - float rinv[9]; - float r_kinv[9]; - float k_rinv[9]; - float t[3]; -}; - - -template <class P> -class CV_EXPORTS RotationWarperBase : public RotationWarper -{ -public: - Point2f warpPoint(const Point2f &pt, const Mat &K, const Mat &R); - - Rect buildMaps(Size src_size, const Mat &K, const Mat &R, Mat &xmap, Mat &ymap); - - Point warp(const Mat &src, const Mat &K, const Mat &R, int interp_mode, int border_mode, - Mat &dst); - - void warpBackward(const Mat &src, const Mat &K, const Mat &R, int interp_mode, int border_mode, - Size dst_size, Mat &dst); - - Rect warpRoi(Size src_size, const Mat &K, const Mat &R); - - float getScale() const { return projector_.scale; } - void setScale(float val) { projector_.scale = val; } - -protected: - - // Detects ROI of the destination image. It's correct for any projection. - virtual void detectResultRoi(Size src_size, Point &dst_tl, Point &dst_br); - - // Detects ROI of the destination image by walking over image border. - // Correctness for any projection isn't guaranteed. - void detectResultRoiByBorder(Size src_size, Point &dst_tl, Point &dst_br); - - P projector_; -}; - - -struct CV_EXPORTS PlaneProjector : ProjectorBase -{ - void mapForward(float x, float y, float &u, float &v); - void mapBackward(float u, float v, float &x, float &y); -}; - - -class CV_EXPORTS PlaneWarper : public RotationWarperBase<PlaneProjector> -{ -public: - PlaneWarper(float scale = 1.f) { projector_.scale = scale; } - - void setScale(float scale) { projector_.scale = scale; } - - Point2f warpPoint(const Point2f &pt, const Mat &K, const Mat &R, const Mat &T); - - Rect buildMaps(Size src_size, const Mat &K, const Mat &R, const Mat &T, Mat &xmap, Mat &ymap); - - Point warp(const Mat &src, const Mat &K, const Mat &R, const Mat &T, int interp_mode, int border_mode, - Mat &dst); - - Rect warpRoi(Size src_size, const Mat &K, const Mat &R, const Mat &T); - -protected: - void detectResultRoi(Size src_size, Point &dst_tl, Point &dst_br); -}; - - -struct CV_EXPORTS SphericalProjector : ProjectorBase -{ - void mapForward(float x, float y, float &u, float &v); - void mapBackward(float u, float v, float &x, float &y); -}; - - -// Projects image onto unit sphere with origin at (0, 0, 0). -// Poles are located at (0, -1, 0) and (0, 1, 0) points. -class CV_EXPORTS SphericalWarper : public RotationWarperBase<SphericalProjector> -{ -public: - SphericalWarper(float scale) { projector_.scale = scale; } - -protected: - void detectResultRoi(Size src_size, Point &dst_tl, Point &dst_br); -}; - - -struct CV_EXPORTS CylindricalProjector : ProjectorBase -{ - void mapForward(float x, float y, float &u, float &v); - void mapBackward(float u, float v, float &x, float &y); -}; - - -// Projects image onto x * x + z * z = 1 cylinder -class CV_EXPORTS CylindricalWarper : public RotationWarperBase<CylindricalProjector> -{ -public: - CylindricalWarper(float scale) { projector_.scale = scale; } - -protected: - void detectResultRoi(Size src_size, Point &dst_tl, Point &dst_br) - { - RotationWarperBase<CylindricalProjector>::detectResultRoiByBorder(src_size, dst_tl, dst_br); - } -}; - - -struct CV_EXPORTS FisheyeProjector : ProjectorBase -{ - void mapForward(float x, float y, float &u, float &v); - void mapBackward(float u, float v, float &x, float &y); -}; - - -class CV_EXPORTS FisheyeWarper : public RotationWarperBase<FisheyeProjector> -{ -public: - FisheyeWarper(float scale) { projector_.scale = scale; } -}; - - -struct CV_EXPORTS StereographicProjector : ProjectorBase -{ - void mapForward(float x, float y, float &u, float &v); - void mapBackward(float u, float v, float &x, float &y); -}; - - -class CV_EXPORTS StereographicWarper : public RotationWarperBase<StereographicProjector> -{ -public: - StereographicWarper(float scale) { projector_.scale = scale; } -}; - - -struct CV_EXPORTS CompressedRectilinearProjector : ProjectorBase -{ - float a, b; - - void mapForward(float x, float y, float &u, float &v); - void mapBackward(float u, float v, float &x, float &y); -}; - - -class CV_EXPORTS CompressedRectilinearWarper : public RotationWarperBase<CompressedRectilinearProjector> -{ -public: - CompressedRectilinearWarper(float scale, float A = 1, float B = 1) - { - projector_.a = A; - projector_.b = B; - projector_.scale = scale; - } -}; - - -struct CV_EXPORTS CompressedRectilinearPortraitProjector : ProjectorBase -{ - float a, b; - - void mapForward(float x, float y, float &u, float &v); - void mapBackward(float u, float v, float &x, float &y); -}; - - -class CV_EXPORTS CompressedRectilinearPortraitWarper : public RotationWarperBase<CompressedRectilinearPortraitProjector> -{ -public: - CompressedRectilinearPortraitWarper(float scale, float A = 1, float B = 1) - { - projector_.a = A; - projector_.b = B; - projector_.scale = scale; - } -}; - - -struct CV_EXPORTS PaniniProjector : ProjectorBase -{ - float a, b; - - void mapForward(float x, float y, float &u, float &v); - void mapBackward(float u, float v, float &x, float &y); -}; - - -class CV_EXPORTS PaniniWarper : public RotationWarperBase<PaniniProjector> -{ -public: - PaniniWarper(float scale, float A = 1, float B = 1) - { - projector_.a = A; - projector_.b = B; - projector_.scale = scale; - } -}; - - -struct CV_EXPORTS PaniniPortraitProjector : ProjectorBase -{ - float a, b; - - void mapForward(float x, float y, float &u, float &v); - void mapBackward(float u, float v, float &x, float &y); -}; - - -class CV_EXPORTS PaniniPortraitWarper : public RotationWarperBase<PaniniPortraitProjector> -{ -public: - PaniniPortraitWarper(float scale, float A = 1, float B = 1) - { - projector_.a = A; - projector_.b = B; - projector_.scale = scale; - } - -}; - - -struct CV_EXPORTS MercatorProjector : ProjectorBase -{ - void mapForward(float x, float y, float &u, float &v); - void mapBackward(float u, float v, float &x, float &y); -}; - - -class CV_EXPORTS MercatorWarper : public RotationWarperBase<MercatorProjector> -{ -public: - MercatorWarper(float scale) { projector_.scale = scale; } -}; - - -struct CV_EXPORTS TransverseMercatorProjector : ProjectorBase -{ - void mapForward(float x, float y, float &u, float &v); - void mapBackward(float u, float v, float &x, float &y); -}; - - -class CV_EXPORTS TransverseMercatorWarper : public RotationWarperBase<TransverseMercatorProjector> -{ -public: - TransverseMercatorWarper(float scale) { projector_.scale = scale; } -}; - - -class CV_EXPORTS PlaneWarperGpu : public PlaneWarper -{ -public: - PlaneWarperGpu(float scale = 1.f) : PlaneWarper(scale) {} - - Rect buildMaps(Size src_size, const Mat &K, const Mat &R, Mat &xmap, Mat &ymap) - { - Rect result = buildMaps(src_size, K, R, d_xmap_, d_ymap_); - d_xmap_.download(xmap); - d_ymap_.download(ymap); - return result; - } - - Rect buildMaps(Size src_size, const Mat &K, const Mat &R, const Mat &T, Mat &xmap, Mat &ymap) - { - Rect result = buildMaps(src_size, K, R, T, d_xmap_, d_ymap_); - d_xmap_.download(xmap); - d_ymap_.download(ymap); - return result; - } - - Point warp(const Mat &src, const Mat &K, const Mat &R, int interp_mode, int border_mode, - Mat &dst) - { - d_src_.upload(src); - Point result = warp(d_src_, K, R, interp_mode, border_mode, d_dst_); - d_dst_.download(dst); - return result; - } - - Point warp(const Mat &src, const Mat &K, const Mat &R, const Mat &T, int interp_mode, int border_mode, - Mat &dst) - { - d_src_.upload(src); - Point result = warp(d_src_, K, R, T, interp_mode, border_mode, d_dst_); - d_dst_.download(dst); - return result; - } - - Rect buildMaps(Size src_size, const Mat &K, const Mat &R, gpu::GpuMat &xmap, gpu::GpuMat &ymap); - - Rect buildMaps(Size src_size, const Mat &K, const Mat &R, const Mat &T, gpu::GpuMat &xmap, gpu::GpuMat &ymap); - - Point warp(const gpu::GpuMat &src, const Mat &K, const Mat &R, int interp_mode, int border_mode, - gpu::GpuMat &dst); - - Point warp(const gpu::GpuMat &src, const Mat &K, const Mat &R, const Mat &T, int interp_mode, int border_mode, - gpu::GpuMat &dst); - -private: - gpu::GpuMat d_xmap_, d_ymap_, d_src_, d_dst_; -}; - - -class CV_EXPORTS SphericalWarperGpu : public SphericalWarper -{ -public: - SphericalWarperGpu(float scale) : SphericalWarper(scale) {} - - Rect buildMaps(Size src_size, const Mat &K, const Mat &R, Mat &xmap, Mat &ymap) - { - Rect result = buildMaps(src_size, K, R, d_xmap_, d_ymap_); - d_xmap_.download(xmap); - d_ymap_.download(ymap); - return result; - } - - Point warp(const Mat &src, const Mat &K, const Mat &R, int interp_mode, int border_mode, - Mat &dst) - { - d_src_.upload(src); - Point result = warp(d_src_, K, R, interp_mode, border_mode, d_dst_); - d_dst_.download(dst); - return result; - } - - Rect buildMaps(Size src_size, const Mat &K, const Mat &R, gpu::GpuMat &xmap, gpu::GpuMat &ymap); - - Point warp(const gpu::GpuMat &src, const Mat &K, const Mat &R, int interp_mode, int border_mode, - gpu::GpuMat &dst); - -private: - gpu::GpuMat d_xmap_, d_ymap_, d_src_, d_dst_; -}; - - -class CV_EXPORTS CylindricalWarperGpu : public CylindricalWarper -{ -public: - CylindricalWarperGpu(float scale) : CylindricalWarper(scale) {} - - Rect buildMaps(Size src_size, const Mat &K, const Mat &R, Mat &xmap, Mat &ymap) - { - Rect result = buildMaps(src_size, K, R, d_xmap_, d_ymap_); - d_xmap_.download(xmap); - d_ymap_.download(ymap); - return result; - } - - Point warp(const Mat &src, const Mat &K, const Mat &R, int interp_mode, int border_mode, - Mat &dst) - { - d_src_.upload(src); - Point result = warp(d_src_, K, R, interp_mode, border_mode, d_dst_); - d_dst_.download(dst); - return result; - } - - Rect buildMaps(Size src_size, const Mat &K, const Mat &R, gpu::GpuMat &xmap, gpu::GpuMat &ymap); - - Point warp(const gpu::GpuMat &src, const Mat &K, const Mat &R, int interp_mode, int border_mode, - gpu::GpuMat &dst); - -private: - gpu::GpuMat d_xmap_, d_ymap_, d_src_, d_dst_; -}; - - -struct SphericalPortraitProjector : ProjectorBase -{ - void mapForward(float x, float y, float &u, float &v); - void mapBackward(float u, float v, float &x, float &y); -}; - - -// Projects image onto unit sphere with origin at (0, 0, 0). -// Poles are located NOT at (0, -1, 0) and (0, 1, 0) points, BUT at (1, 0, 0) and (-1, 0, 0) points. -class CV_EXPORTS SphericalPortraitWarper : public RotationWarperBase<SphericalPortraitProjector> -{ -public: - SphericalPortraitWarper(float scale) { projector_.scale = scale; } - -protected: - void detectResultRoi(Size src_size, Point &dst_tl, Point &dst_br); -}; - -struct CylindricalPortraitProjector : ProjectorBase -{ - void mapForward(float x, float y, float &u, float &v); - void mapBackward(float u, float v, float &x, float &y); -}; - - -class CV_EXPORTS CylindricalPortraitWarper : public RotationWarperBase<CylindricalPortraitProjector> -{ -public: - CylindricalPortraitWarper(float scale) { projector_.scale = scale; } - -protected: - void detectResultRoi(Size src_size, Point &dst_tl, Point &dst_br) - { - RotationWarperBase<CylindricalPortraitProjector>::detectResultRoiByBorder(src_size, dst_tl, dst_br); - } -}; - -struct PlanePortraitProjector : ProjectorBase -{ - void mapForward(float x, float y, float &u, float &v); - void mapBackward(float u, float v, float &x, float &y); -}; - - -class CV_EXPORTS PlanePortraitWarper : public RotationWarperBase<PlanePortraitProjector> -{ -public: - PlanePortraitWarper(float scale) { projector_.scale = scale; } - -protected: - void detectResultRoi(Size src_size, Point &dst_tl, Point &dst_br) - { - RotationWarperBase<PlanePortraitProjector>::detectResultRoiByBorder(src_size, dst_tl, dst_br); - } -}; - -} // namespace detail -} // namespace cv - -#include "warpers_inl.hpp" - -#endif // __OPENCV_STITCHING_WARPERS_HPP__ diff --git a/thirdparty/raspberrypi/includes/opencv2/stitching/detail/warpers_inl.hpp b/thirdparty/raspberrypi/includes/opencv2/stitching/detail/warpers_inl.hpp deleted file mode 100644 index b112123..0000000 --- a/thirdparty/raspberrypi/includes/opencv2/stitching/detail/warpers_inl.hpp +++ /dev/null @@ -1,765 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#ifndef __OPENCV_STITCHING_WARPERS_INL_HPP__ -#define __OPENCV_STITCHING_WARPERS_INL_HPP__ - -#include "opencv2/core/core.hpp" -#include "warpers.hpp" // Make your IDE see declarations - -namespace cv { -namespace detail { - -template <class P> -Point2f RotationWarperBase<P>::warpPoint(const Point2f &pt, const Mat &K, const Mat &R) -{ - projector_.setCameraParams(K, R); - Point2f uv; - projector_.mapForward(pt.x, pt.y, uv.x, uv.y); - return uv; -} - - -template <class P> -Rect RotationWarperBase<P>::buildMaps(Size src_size, const Mat &K, const Mat &R, Mat &xmap, Mat &ymap) -{ - projector_.setCameraParams(K, R); - - Point dst_tl, dst_br; - detectResultRoi(src_size, dst_tl, dst_br); - - xmap.create(dst_br.y - dst_tl.y + 1, dst_br.x - dst_tl.x + 1, CV_32F); - ymap.create(dst_br.y - dst_tl.y + 1, dst_br.x - dst_tl.x + 1, CV_32F); - - float x, y; - for (int v = dst_tl.y; v <= dst_br.y; ++v) - { - for (int u = dst_tl.x; u <= dst_br.x; ++u) - { - projector_.mapBackward(static_cast<float>(u), static_cast<float>(v), x, y); - xmap.at<float>(v - dst_tl.y, u - dst_tl.x) = x; - ymap.at<float>(v - dst_tl.y, u - dst_tl.x) = y; - } - } - - return Rect(dst_tl, dst_br); -} - - -template <class P> -Point RotationWarperBase<P>::warp(const Mat &src, const Mat &K, const Mat &R, int interp_mode, int border_mode, - Mat &dst) -{ - Mat xmap, ymap; - Rect dst_roi = buildMaps(src.size(), K, R, xmap, ymap); - - dst.create(dst_roi.height + 1, dst_roi.width + 1, src.type()); - remap(src, dst, xmap, ymap, interp_mode, border_mode); - - return dst_roi.tl(); -} - - -template <class P> -void RotationWarperBase<P>::warpBackward(const Mat &src, const Mat &K, const Mat &R, int interp_mode, int border_mode, - Size dst_size, Mat &dst) -{ - projector_.setCameraParams(K, R); - - Point src_tl, src_br; - detectResultRoi(dst_size, src_tl, src_br); - CV_Assert(src_br.x - src_tl.x + 1 == src.cols && src_br.y - src_tl.y + 1 == src.rows); - - Mat xmap(dst_size, CV_32F); - Mat ymap(dst_size, CV_32F); - - float u, v; - for (int y = 0; y < dst_size.height; ++y) - { - for (int x = 0; x < dst_size.width; ++x) - { - projector_.mapForward(static_cast<float>(x), static_cast<float>(y), u, v); - xmap.at<float>(y, x) = u - src_tl.x; - ymap.at<float>(y, x) = v - src_tl.y; - } - } - - dst.create(dst_size, src.type()); - remap(src, dst, xmap, ymap, interp_mode, border_mode); -} - - -template <class P> -Rect RotationWarperBase<P>::warpRoi(Size src_size, const Mat &K, const Mat &R) -{ - projector_.setCameraParams(K, R); - - Point dst_tl, dst_br; - detectResultRoi(src_size, dst_tl, dst_br); - - return Rect(dst_tl, Point(dst_br.x + 1, dst_br.y + 1)); -} - - -template <class P> -void RotationWarperBase<P>::detectResultRoi(Size src_size, Point &dst_tl, Point &dst_br) -{ - float tl_uf = std::numeric_limits<float>::max(); - float tl_vf = std::numeric_limits<float>::max(); - float br_uf = -std::numeric_limits<float>::max(); - float br_vf = -std::numeric_limits<float>::max(); - - float u, v; - for (int y = 0; y < src_size.height; ++y) - { - for (int x = 0; x < src_size.width; ++x) - { - projector_.mapForward(static_cast<float>(x), static_cast<float>(y), u, v); - tl_uf = std::min(tl_uf, u); tl_vf = std::min(tl_vf, v); - br_uf = std::max(br_uf, u); br_vf = std::max(br_vf, v); - } - } - - dst_tl.x = static_cast<int>(tl_uf); - dst_tl.y = static_cast<int>(tl_vf); - dst_br.x = static_cast<int>(br_uf); - dst_br.y = static_cast<int>(br_vf); -} - - -template <class P> -void RotationWarperBase<P>::detectResultRoiByBorder(Size src_size, Point &dst_tl, Point &dst_br) -{ - float tl_uf = std::numeric_limits<float>::max(); - float tl_vf = std::numeric_limits<float>::max(); - float br_uf = -std::numeric_limits<float>::max(); - float br_vf = -std::numeric_limits<float>::max(); - - float u, v; - for (float x = 0; x < src_size.width; ++x) - { - projector_.mapForward(static_cast<float>(x), 0, u, v); - tl_uf = std::min(tl_uf, u); tl_vf = std::min(tl_vf, v); - br_uf = std::max(br_uf, u); br_vf = std::max(br_vf, v); - - projector_.mapForward(static_cast<float>(x), static_cast<float>(src_size.height - 1), u, v); - tl_uf = std::min(tl_uf, u); tl_vf = std::min(tl_vf, v); - br_uf = std::max(br_uf, u); br_vf = std::max(br_vf, v); - } - for (int y = 0; y < src_size.height; ++y) - { - projector_.mapForward(0, static_cast<float>(y), u, v); - tl_uf = std::min(tl_uf, u); tl_vf = std::min(tl_vf, v); - br_uf = std::max(br_uf, u); br_vf = std::max(br_vf, v); - - projector_.mapForward(static_cast<float>(src_size.width - 1), static_cast<float>(y), u, v); - tl_uf = std::min(tl_uf, u); tl_vf = std::min(tl_vf, v); - br_uf = std::max(br_uf, u); br_vf = std::max(br_vf, v); - } - - dst_tl.x = static_cast<int>(tl_uf); - dst_tl.y = static_cast<int>(tl_vf); - dst_br.x = static_cast<int>(br_uf); - dst_br.y = static_cast<int>(br_vf); -} - - -inline -void PlaneProjector::mapForward(float x, float y, float &u, float &v) -{ - float x_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2]; - float y_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5]; - float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8]; - - x_ = t[0] + x_ / z_ * (1 - t[2]); - y_ = t[1] + y_ / z_ * (1 - t[2]); - - u = scale * x_; - v = scale * y_; -} - - -inline -void PlaneProjector::mapBackward(float u, float v, float &x, float &y) -{ - u = u / scale - t[0]; - v = v / scale - t[1]; - - float z; - x = k_rinv[0] * u + k_rinv[1] * v + k_rinv[2] * (1 - t[2]); - y = k_rinv[3] * u + k_rinv[4] * v + k_rinv[5] * (1 - t[2]); - z = k_rinv[6] * u + k_rinv[7] * v + k_rinv[8] * (1 - t[2]); - - x /= z; - y /= z; -} - - -inline -void SphericalProjector::mapForward(float x, float y, float &u, float &v) -{ - float x_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2]; - float y_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5]; - float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8]; - - u = scale * atan2f(x_, z_); - float w = y_ / sqrtf(x_ * x_ + y_ * y_ + z_ * z_); - v = scale * (static_cast<float>(CV_PI) - acosf(w == w ? w : 0)); -} - - -inline -void SphericalProjector::mapBackward(float u, float v, float &x, float &y) -{ - u /= scale; - v /= scale; - - float sinv = sinf(static_cast<float>(CV_PI) - v); - float x_ = sinv * sinf(u); - float y_ = cosf(static_cast<float>(CV_PI) - v); - float z_ = sinv * cosf(u); - - float z; - x = k_rinv[0] * x_ + k_rinv[1] * y_ + k_rinv[2] * z_; - y = k_rinv[3] * x_ + k_rinv[4] * y_ + k_rinv[5] * z_; - z = k_rinv[6] * x_ + k_rinv[7] * y_ + k_rinv[8] * z_; - - if (z > 0) { x /= z; y /= z; } - else x = y = -1; -} - - -inline -void CylindricalProjector::mapForward(float x, float y, float &u, float &v) -{ - float x_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2]; - float y_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5]; - float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8]; - - u = scale * atan2f(x_, z_); - v = scale * y_ / sqrtf(x_ * x_ + z_ * z_); -} - - -inline -void CylindricalProjector::mapBackward(float u, float v, float &x, float &y) -{ - u /= scale; - v /= scale; - - float x_ = sinf(u); - float y_ = v; - float z_ = cosf(u); - - float z; - x = k_rinv[0] * x_ + k_rinv[1] * y_ + k_rinv[2] * z_; - y = k_rinv[3] * x_ + k_rinv[4] * y_ + k_rinv[5] * z_; - z = k_rinv[6] * x_ + k_rinv[7] * y_ + k_rinv[8] * z_; - - if (z > 0) { x /= z; y /= z; } - else x = y = -1; -} - -inline -void FisheyeProjector::mapForward(float x, float y, float &u, float &v) -{ - float x_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2]; - float y_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5]; - float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8]; - - float u_ = atan2f(x_, z_); - float v_ = (float)CV_PI - acosf(y_ / sqrtf(x_ * x_ + y_ * y_ + z_ * z_)); - - u = scale * v_ * cosf(u_); - v = scale * v_ * sinf(u_); -} - -inline -void FisheyeProjector::mapBackward(float u, float v, float &x, float &y) -{ - u /= scale; - v /= scale; - - float u_ = atan2f(v, u); - float v_ = sqrtf(u*u + v*v); - - float sinv = sinf((float)CV_PI - v_); - float x_ = sinv * sinf(u_); - float y_ = cosf((float)CV_PI - v_); - float z_ = sinv * cosf(u_); - - float z; - x = k_rinv[0] * x_ + k_rinv[1] * y_ + k_rinv[2] * z_; - y = k_rinv[3] * x_ + k_rinv[4] * y_ + k_rinv[5] * z_; - z = k_rinv[6] * x_ + k_rinv[7] * y_ + k_rinv[8] * z_; - - if (z > 0) { x /= z; y /= z; } - else x = y = -1; -} - -inline -void StereographicProjector::mapForward(float x, float y, float &u, float &v) -{ - float x_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2]; - float y_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5]; - float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8]; - - float u_ = atan2f(x_, z_); - float v_ = (float)CV_PI - acosf(y_ / sqrtf(x_ * x_ + y_ * y_ + z_ * z_)); - - float r = sinf(v_) / (1 - cosf(v_)); - - u = scale * r * cos(u_); - v = scale * r * sin(u_); -} - -inline -void StereographicProjector::mapBackward(float u, float v, float &x, float &y) -{ - u /= scale; - v /= scale; - - float u_ = atan2f(v, u); - float r = sqrtf(u*u + v*v); - float v_ = 2 * atanf(1.f / r); - - float sinv = sinf((float)CV_PI - v_); - float x_ = sinv * sinf(u_); - float y_ = cosf((float)CV_PI - v_); - float z_ = sinv * cosf(u_); - - float z; - x = k_rinv[0] * x_ + k_rinv[1] * y_ + k_rinv[2] * z_; - y = k_rinv[3] * x_ + k_rinv[4] * y_ + k_rinv[5] * z_; - z = k_rinv[6] * x_ + k_rinv[7] * y_ + k_rinv[8] * z_; - - if (z > 0) { x /= z; y /= z; } - else x = y = -1; -} - -inline -void CompressedRectilinearProjector::mapForward(float x, float y, float &u, float &v) -{ - float x_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2]; - float y_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5]; - float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8]; - - float u_ = atan2f(x_, z_); - float v_ = asinf(y_ / sqrtf(x_ * x_ + y_ * y_ + z_ * z_)); - - u = scale * a * tanf(u_ / a); - v = scale * b * tanf(v_) / cosf(u_); -} - -inline -void CompressedRectilinearProjector::mapBackward(float u, float v, float &x, float &y) -{ - u /= scale; - v /= scale; - - float aatg = a * atanf(u / a); - float u_ = aatg; - float v_ = atanf(v * cosf(aatg) / b); - - float cosv = cosf(v_); - float x_ = cosv * sinf(u_); - float y_ = sinf(v_); - float z_ = cosv * cosf(u_); - - float z; - x = k_rinv[0] * x_ + k_rinv[1] * y_ + k_rinv[2] * z_; - y = k_rinv[3] * x_ + k_rinv[4] * y_ + k_rinv[5] * z_; - z = k_rinv[6] * x_ + k_rinv[7] * y_ + k_rinv[8] * z_; - - if (z > 0) { x /= z; y /= z; } - else x = y = -1; -} - -inline -void CompressedRectilinearPortraitProjector::mapForward(float x, float y, float &u, float &v) -{ - float y_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2]; - float x_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5]; - float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8]; - - float u_ = atan2f(x_, z_); - float v_ = asinf(y_ / sqrtf(x_ * x_ + y_ * y_ + z_ * z_)); - - u = - scale * a * tanf(u_ / a); - v = scale * b * tanf(v_) / cosf(u_); -} - -inline -void CompressedRectilinearPortraitProjector::mapBackward(float u, float v, float &x, float &y) -{ - u /= - scale; - v /= scale; - - float aatg = a * atanf(u / a); - float u_ = aatg; - float v_ = atanf(v * cosf( aatg ) / b); - - float cosv = cosf(v_); - float y_ = cosv * sinf(u_); - float x_ = sinf(v_); - float z_ = cosv * cosf(u_); - - float z; - x = k_rinv[0] * x_ + k_rinv[1] * y_ + k_rinv[2] * z_; - y = k_rinv[3] * x_ + k_rinv[4] * y_ + k_rinv[5] * z_; - z = k_rinv[6] * x_ + k_rinv[7] * y_ + k_rinv[8] * z_; - - if (z > 0) { x /= z; y /= z; } - else x = y = -1; -} - -inline -void PaniniProjector::mapForward(float x, float y, float &u, float &v) -{ - float x_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2]; - float y_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5]; - float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8]; - - float u_ = atan2f(x_, z_); - float v_ = asinf(y_ / sqrtf(x_ * x_ + y_ * y_ + z_ * z_)); - - float tg = a * tanf(u_ / a); - u = scale * tg; - - float sinu = sinf(u_); - if ( fabs(sinu) < 1E-7 ) - v = scale * b * tanf(v_); - else - v = scale * b * tg * tanf(v_) / sinu; -} - -inline -void PaniniProjector::mapBackward(float u, float v, float &x, float &y) -{ - u /= scale; - v /= scale; - - float lamda = a * atanf(u / a); - float u_ = lamda; - - float v_; - if ( fabs(lamda) > 1E-7) - v_ = atanf(v * sinf(lamda) / (b * a * tanf(lamda / a))); - else - v_ = atanf(v / b); - - float cosv = cosf(v_); - float x_ = cosv * sinf(u_); - float y_ = sinf(v_); - float z_ = cosv * cosf(u_); - - float z; - x = k_rinv[0] * x_ + k_rinv[1] * y_ + k_rinv[2] * z_; - y = k_rinv[3] * x_ + k_rinv[4] * y_ + k_rinv[5] * z_; - z = k_rinv[6] * x_ + k_rinv[7] * y_ + k_rinv[8] * z_; - - if (z > 0) { x /= z; y /= z; } - else x = y = -1; -} - -inline -void PaniniPortraitProjector::mapForward(float x, float y, float &u, float &v) -{ - float y_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2]; - float x_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5]; - float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8]; - - float u_ = atan2f(x_, z_); - float v_ = asinf(y_ / sqrtf(x_ * x_ + y_ * y_ + z_ * z_)); - - float tg = a * tanf(u_ / a); - u = - scale * tg; - - float sinu = sinf( u_ ); - if ( fabs(sinu) < 1E-7 ) - v = scale * b * tanf(v_); - else - v = scale * b * tg * tanf(v_) / sinu; -} - -inline -void PaniniPortraitProjector::mapBackward(float u, float v, float &x, float &y) -{ - u /= - scale; - v /= scale; - - float lamda = a * atanf(u / a); - float u_ = lamda; - - float v_; - if ( fabs(lamda) > 1E-7) - v_ = atanf(v * sinf(lamda) / (b * a * tanf(lamda/a))); - else - v_ = atanf(v / b); - - float cosv = cosf(v_); - float y_ = cosv * sinf(u_); - float x_ = sinf(v_); - float z_ = cosv * cosf(u_); - - float z; - x = k_rinv[0] * x_ + k_rinv[1] * y_ + k_rinv[2] * z_; - y = k_rinv[3] * x_ + k_rinv[4] * y_ + k_rinv[5] * z_; - z = k_rinv[6] * x_ + k_rinv[7] * y_ + k_rinv[8] * z_; - - if (z > 0) { x /= z; y /= z; } - else x = y = -1; -} - -inline -void MercatorProjector::mapForward(float x, float y, float &u, float &v) -{ - float x_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2]; - float y_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5]; - float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8]; - - float u_ = atan2f(x_, z_); - float v_ = asinf(y_ / sqrtf(x_ * x_ + y_ * y_ + z_ * z_)); - - u = scale * u_; - v = scale * logf( tanf( (float)(CV_PI/4) + v_/2 ) ); -} - -inline -void MercatorProjector::mapBackward(float u, float v, float &x, float &y) -{ - u /= scale; - v /= scale; - - float v_ = atanf( sinhf(v) ); - float u_ = u; - - float cosv = cosf(v_); - float x_ = cosv * sinf(u_); - float y_ = sinf(v_); - float z_ = cosv * cosf(u_); - - float z; - x = k_rinv[0] * x_ + k_rinv[1] * y_ + k_rinv[2] * z_; - y = k_rinv[3] * x_ + k_rinv[4] * y_ + k_rinv[5] * z_; - z = k_rinv[6] * x_ + k_rinv[7] * y_ + k_rinv[8] * z_; - - if (z > 0) { x /= z; y /= z; } - else x = y = -1; -} - -inline -void TransverseMercatorProjector::mapForward(float x, float y, float &u, float &v) -{ - float x_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2]; - float y_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5]; - float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8]; - - float u_ = atan2f(x_, z_); - float v_ = asinf(y_ / sqrtf(x_ * x_ + y_ * y_ + z_ * z_)); - - float B = cosf(v_) * sinf(u_); - - u = scale / 2 * logf( (1+B) / (1-B) ); - v = scale * atan2f(tanf(v_), cosf(u_)); -} - -inline -void TransverseMercatorProjector::mapBackward(float u, float v, float &x, float &y) -{ - u /= scale; - v /= scale; - - float v_ = asinf( sinf(v) / coshf(u) ); - float u_ = atan2f( sinhf(u), cos(v) ); - - float cosv = cosf(v_); - float x_ = cosv * sinf(u_); - float y_ = sinf(v_); - float z_ = cosv * cosf(u_); - - float z; - x = k_rinv[0] * x_ + k_rinv[1] * y_ + k_rinv[2] * z_; - y = k_rinv[3] * x_ + k_rinv[4] * y_ + k_rinv[5] * z_; - z = k_rinv[6] * x_ + k_rinv[7] * y_ + k_rinv[8] * z_; - - if (z > 0) { x /= z; y /= z; } - else x = y = -1; -} - -inline -void SphericalPortraitProjector::mapForward(float x, float y, float &u0, float &v0) -{ - float x0_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2]; - float y0_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5]; - float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8]; - - float x_ = y0_; - float y_ = x0_; - float u, v; - - u = scale * atan2f(x_, z_); - v = scale * (static_cast<float>(CV_PI) - acosf(y_ / sqrtf(x_ * x_ + y_ * y_ + z_ * z_))); - - u0 = -u;//v; - v0 = v;//u; -} - - -inline -void SphericalPortraitProjector::mapBackward(float u0, float v0, float &x, float &y) -{ - float u, v; - u = -u0;//v0; - v = v0;//u0; - - u /= scale; - v /= scale; - - float sinv = sinf(static_cast<float>(CV_PI) - v); - float x0_ = sinv * sinf(u); - float y0_ = cosf(static_cast<float>(CV_PI) - v); - float z_ = sinv * cosf(u); - - float x_ = y0_; - float y_ = x0_; - - float z; - x = k_rinv[0] * x_ + k_rinv[1] * y_ + k_rinv[2] * z_; - y = k_rinv[3] * x_ + k_rinv[4] * y_ + k_rinv[5] * z_; - z = k_rinv[6] * x_ + k_rinv[7] * y_ + k_rinv[8] * z_; - - if (z > 0) { x /= z; y /= z; } - else x = y = -1; -} - -inline -void CylindricalPortraitProjector::mapForward(float x, float y, float &u0, float &v0) -{ - float x0_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2]; - float y0_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5]; - float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8]; - - float x_ = y0_; - float y_ = x0_; - float u, v; - - u = scale * atan2f(x_, z_); - v = scale * y_ / sqrtf(x_ * x_ + z_ * z_); - - u0 = -u;//v; - v0 = v;//u; -} - - -inline -void CylindricalPortraitProjector::mapBackward(float u0, float v0, float &x, float &y) -{ - float u, v; - u = -u0;//v0; - v = v0;//u0; - - u /= scale; - v /= scale; - - float x0_ = sinf(u); - float y0_ = v; - float z_ = cosf(u); - - float x_ = y0_; - float y_ = x0_; - - float z; - x = k_rinv[0] * x_ + k_rinv[1] * y_ + k_rinv[2] * z_; - y = k_rinv[3] * x_ + k_rinv[4] * y_ + k_rinv[5] * z_; - z = k_rinv[6] * x_ + k_rinv[7] * y_ + k_rinv[8] * z_; - - if (z > 0) { x /= z; y /= z; } - else x = y = -1; -} - -inline -void PlanePortraitProjector::mapForward(float x, float y, float &u0, float &v0) -{ - float x0_ = r_kinv[0] * x + r_kinv[1] * y + r_kinv[2]; - float y0_ = r_kinv[3] * x + r_kinv[4] * y + r_kinv[5]; - float z_ = r_kinv[6] * x + r_kinv[7] * y + r_kinv[8]; - - float x_ = y0_; - float y_ = x0_; - - x_ = t[0] + x_ / z_ * (1 - t[2]); - y_ = t[1] + y_ / z_ * (1 - t[2]); - - float u,v; - u = scale * x_; - v = scale * y_; - - u0 = -u; - v0 = v; -} - - -inline -void PlanePortraitProjector::mapBackward(float u0, float v0, float &x, float &y) -{ - float u, v; - u = -u0; - v = v0; - - u = u / scale - t[0]; - v = v / scale - t[1]; - - float z; - x = k_rinv[0] * v + k_rinv[1] * u + k_rinv[2] * (1 - t[2]); - y = k_rinv[3] * v + k_rinv[4] * u + k_rinv[5] * (1 - t[2]); - z = k_rinv[6] * v + k_rinv[7] * u + k_rinv[8] * (1 - t[2]); - - x /= z; - y /= z; -} - - -} // namespace detail -} // namespace cv - -#endif // __OPENCV_STITCHING_WARPERS_INL_HPP__ diff --git a/thirdparty/raspberrypi/includes/opencv2/stitching/stitcher.hpp b/thirdparty/raspberrypi/includes/opencv2/stitching/stitcher.hpp deleted file mode 100644 index e274deb..0000000 --- a/thirdparty/raspberrypi/includes/opencv2/stitching/stitcher.hpp +++ /dev/null @@ -1,174 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#ifndef __OPENCV_STITCHING_STITCHER_HPP__ -#define __OPENCV_STITCHING_STITCHER_HPP__ - -#include "opencv2/core/core.hpp" -#include "opencv2/features2d/features2d.hpp" -#include "opencv2/stitching/warpers.hpp" -#include "opencv2/stitching/detail/matchers.hpp" -#include "opencv2/stitching/detail/motion_estimators.hpp" -#include "opencv2/stitching/detail/exposure_compensate.hpp" -#include "opencv2/stitching/detail/seam_finders.hpp" -#include "opencv2/stitching/detail/blenders.hpp" -#include "opencv2/stitching/detail/camera.hpp" - -namespace cv { - -class CV_EXPORTS Stitcher -{ -public: - enum { ORIG_RESOL = -1 }; - enum Status { OK, ERR_NEED_MORE_IMGS }; - - // Creates stitcher with default parameters - static Stitcher createDefault(bool try_use_gpu = false); - - double registrationResol() const { return registr_resol_; } - void setRegistrationResol(double resol_mpx) { registr_resol_ = resol_mpx; } - - double seamEstimationResol() const { return seam_est_resol_; } - void setSeamEstimationResol(double resol_mpx) { seam_est_resol_ = resol_mpx; } - - double compositingResol() const { return compose_resol_; } - void setCompositingResol(double resol_mpx) { compose_resol_ = resol_mpx; } - - double panoConfidenceThresh() const { return conf_thresh_; } - void setPanoConfidenceThresh(double conf_thresh) { conf_thresh_ = conf_thresh; } - - bool waveCorrection() const { return do_wave_correct_; } - void setWaveCorrection(bool flag) { do_wave_correct_ = flag; } - - detail::WaveCorrectKind waveCorrectKind() const { return wave_correct_kind_; } - void setWaveCorrectKind(detail::WaveCorrectKind kind) { wave_correct_kind_ = kind; } - - Ptr<detail::FeaturesFinder> featuresFinder() { return features_finder_; } - const Ptr<detail::FeaturesFinder> featuresFinder() const { return features_finder_; } - void setFeaturesFinder(Ptr<detail::FeaturesFinder> features_finder) - { features_finder_ = features_finder; } - - Ptr<detail::FeaturesMatcher> featuresMatcher() { return features_matcher_; } - const Ptr<detail::FeaturesMatcher> featuresMatcher() const { return features_matcher_; } - void setFeaturesMatcher(Ptr<detail::FeaturesMatcher> features_matcher) - { features_matcher_ = features_matcher; } - - const cv::Mat& matchingMask() const { return matching_mask_; } - void setMatchingMask(const cv::Mat &mask) - { - CV_Assert(mask.type() == CV_8U && mask.cols == mask.rows); - matching_mask_ = mask.clone(); - } - - Ptr<detail::BundleAdjusterBase> bundleAdjuster() { return bundle_adjuster_; } - const Ptr<detail::BundleAdjusterBase> bundleAdjuster() const { return bundle_adjuster_; } - void setBundleAdjuster(Ptr<detail::BundleAdjusterBase> bundle_adjuster) - { bundle_adjuster_ = bundle_adjuster; } - - Ptr<WarperCreator> warper() { return warper_; } - const Ptr<WarperCreator> warper() const { return warper_; } - void setWarper(Ptr<WarperCreator> creator) { warper_ = creator; } - - Ptr<detail::ExposureCompensator> exposureCompensator() { return exposure_comp_; } - const Ptr<detail::ExposureCompensator> exposureCompensator() const { return exposure_comp_; } - void setExposureCompensator(Ptr<detail::ExposureCompensator> exposure_comp) - { exposure_comp_ = exposure_comp; } - - Ptr<detail::SeamFinder> seamFinder() { return seam_finder_; } - const Ptr<detail::SeamFinder> seamFinder() const { return seam_finder_; } - void setSeamFinder(Ptr<detail::SeamFinder> seam_finder) { seam_finder_ = seam_finder; } - - Ptr<detail::Blender> blender() { return blender_; } - const Ptr<detail::Blender> blender() const { return blender_; } - void setBlender(Ptr<detail::Blender> b) { blender_ = b; } - - Status estimateTransform(InputArray images); - Status estimateTransform(InputArray images, const std::vector<std::vector<Rect> > &rois); - - Status composePanorama(OutputArray pano); - Status composePanorama(InputArray images, OutputArray pano); - - Status stitch(InputArray images, OutputArray pano); - Status stitch(InputArray images, const std::vector<std::vector<Rect> > &rois, OutputArray pano); - - std::vector<int> component() const { return indices_; } - std::vector<detail::CameraParams> cameras() const { return cameras_; } - double workScale() const { return work_scale_; } - -private: - Stitcher() {} - - Status matchImages(); - void estimateCameraParams(); - - double registr_resol_; - double seam_est_resol_; - double compose_resol_; - double conf_thresh_; - Ptr<detail::FeaturesFinder> features_finder_; - Ptr<detail::FeaturesMatcher> features_matcher_; - cv::Mat matching_mask_; - Ptr<detail::BundleAdjusterBase> bundle_adjuster_; - bool do_wave_correct_; - detail::WaveCorrectKind wave_correct_kind_; - Ptr<WarperCreator> warper_; - Ptr<detail::ExposureCompensator> exposure_comp_; - Ptr<detail::SeamFinder> seam_finder_; - Ptr<detail::Blender> blender_; - - std::vector<cv::Mat> imgs_; - std::vector<std::vector<cv::Rect> > rois_; - std::vector<cv::Size> full_img_sizes_; - std::vector<detail::ImageFeatures> features_; - std::vector<detail::MatchesInfo> pairwise_matches_; - std::vector<cv::Mat> seam_est_imgs_; - std::vector<int> indices_; - std::vector<detail::CameraParams> cameras_; - double work_scale_; - double seam_scale_; - double seam_work_aspect_; - double warped_image_scale_; -}; - -} // namespace cv - -#endif // __OPENCV_STITCHING_STITCHER_HPP__ diff --git a/thirdparty/raspberrypi/includes/opencv2/stitching/warpers.hpp b/thirdparty/raspberrypi/includes/opencv2/stitching/warpers.hpp deleted file mode 100644 index 11e012f..0000000 --- a/thirdparty/raspberrypi/includes/opencv2/stitching/warpers.hpp +++ /dev/null @@ -1,170 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#ifndef __OPENCV_STITCHING_WARPER_CREATORS_HPP__ -#define __OPENCV_STITCHING_WARPER_CREATORS_HPP__ - -#include "opencv2/stitching/detail/warpers.hpp" - -namespace cv { - -class WarperCreator -{ -public: - virtual ~WarperCreator() {} - virtual Ptr<detail::RotationWarper> create(float scale) const = 0; -}; - - -class PlaneWarper : public WarperCreator -{ -public: - Ptr<detail::RotationWarper> create(float scale) const { return new detail::PlaneWarper(scale); } -}; - - -class CylindricalWarper: public WarperCreator -{ -public: - Ptr<detail::RotationWarper> create(float scale) const { return new detail::CylindricalWarper(scale); } -}; - - -class SphericalWarper: public WarperCreator -{ -public: - Ptr<detail::RotationWarper> create(float scale) const { return new detail::SphericalWarper(scale); } -}; - -class FisheyeWarper : public WarperCreator -{ -public: - Ptr<detail::RotationWarper> create(float scale) const { return new detail::FisheyeWarper(scale); } -}; - -class StereographicWarper: public WarperCreator -{ -public: - Ptr<detail::RotationWarper> create(float scale) const { return new detail::StereographicWarper(scale); } -}; - -class CompressedRectilinearWarper: public WarperCreator -{ - float a, b; -public: - CompressedRectilinearWarper(float A = 1, float B = 1) - { - a = A; b = B; - } - Ptr<detail::RotationWarper> create(float scale) const { return new detail::CompressedRectilinearWarper(scale, a, b); } -}; - -class CompressedRectilinearPortraitWarper: public WarperCreator -{ - float a, b; -public: - CompressedRectilinearPortraitWarper(float A = 1, float B = 1) - { - a = A; b = B; - } - Ptr<detail::RotationWarper> create(float scale) const { return new detail::CompressedRectilinearPortraitWarper(scale, a, b); } -}; - -class PaniniWarper: public WarperCreator -{ - float a, b; -public: - PaniniWarper(float A = 1, float B = 1) - { - a = A; b = B; - } - Ptr<detail::RotationWarper> create(float scale) const { return new detail::PaniniWarper(scale, a, b); } -}; - -class PaniniPortraitWarper: public WarperCreator -{ - float a, b; -public: - PaniniPortraitWarper(float A = 1, float B = 1) - { - a = A; b = B; - } - Ptr<detail::RotationWarper> create(float scale) const { return new detail::PaniniPortraitWarper(scale, a, b); } -}; - -class MercatorWarper: public WarperCreator -{ -public: - Ptr<detail::RotationWarper> create(float scale) const { return new detail::MercatorWarper(scale); } -}; - -class TransverseMercatorWarper: public WarperCreator -{ -public: - Ptr<detail::RotationWarper> create(float scale) const { return new detail::TransverseMercatorWarper(scale); } -}; - - - -class PlaneWarperGpu: public WarperCreator -{ -public: - Ptr<detail::RotationWarper> create(float scale) const { return new detail::PlaneWarperGpu(scale); } -}; - - -class CylindricalWarperGpu: public WarperCreator -{ -public: - Ptr<detail::RotationWarper> create(float scale) const { return new detail::CylindricalWarperGpu(scale); } -}; - - -class SphericalWarperGpu: public WarperCreator -{ -public: - Ptr<detail::RotationWarper> create(float scale) const { return new detail::SphericalWarperGpu(scale); } -}; - -} // namespace cv - -#endif // __OPENCV_STITCHING_WARPER_CREATORS_HPP__ |