Joe Verbout
/
main
opencv on mbed
Embed:
(wiki syntax)
Show/hide line numbers
exposure_compensate.hpp
00001 /*M/////////////////////////////////////////////////////////////////////////////////////// 00002 // 00003 // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. 00004 // 00005 // By downloading, copying, installing or using the software you agree to this license. 00006 // If you do not agree to this license, do not download, install, 00007 // copy or use the software. 00008 // 00009 // 00010 // License Agreement 00011 // For Open Source Computer Vision Library 00012 // 00013 // Copyright (C) 2000-2008, Intel Corporation, all rights reserved. 00014 // Copyright (C) 2009, Willow Garage Inc., all rights reserved. 00015 // Third party copyrights are property of their respective owners. 00016 // 00017 // Redistribution and use in source and binary forms, with or without modification, 00018 // are permitted provided that the following conditions are met: 00019 // 00020 // * Redistribution's of source code must retain the above copyright notice, 00021 // this list of conditions and the following disclaimer. 00022 // 00023 // * Redistribution's in binary form must reproduce the above copyright notice, 00024 // this list of conditions and the following disclaimer in the documentation 00025 // and/or other materials provided with the distribution. 00026 // 00027 // * The name of the copyright holders may not be used to endorse or promote products 00028 // derived from this software without specific prior written permission. 00029 // 00030 // This software is provided by the copyright holders and contributors "as is" and 00031 // any express or implied warranties, including, but not limited to, the implied 00032 // warranties of merchantability and fitness for a particular purpose are disclaimed. 00033 // In no event shall the Intel Corporation or contributors be liable for any direct, 00034 // indirect, incidental, special, exemplary, or consequential damages 00035 // (including, but not limited to, procurement of substitute goods or services; 00036 // loss of use, data, or profits; or business interruption) however caused 00037 // and on any theory of liability, whether in contract, strict liability, 00038 // or tort (including negligence or otherwise) arising in any way out of 00039 // the use of this software, even if advised of the possibility of such damage. 00040 // 00041 //M*/ 00042 00043 #ifndef __OPENCV_STITCHING_EXPOSURE_COMPENSATE_HPP__ 00044 #define __OPENCV_STITCHING_EXPOSURE_COMPENSATE_HPP__ 00045 00046 #include "opencv2/core.hpp" 00047 00048 namespace cv { 00049 namespace detail { 00050 00051 //! @addtogroup stitching_exposure 00052 //! @{ 00053 00054 /** @brief Base class for all exposure compensators. 00055 */ 00056 class CV_EXPORTS ExposureCompensator 00057 { 00058 public: 00059 virtual ~ExposureCompensator() {} 00060 00061 enum { NO, GAIN, GAIN_BLOCKS }; 00062 static Ptr<ExposureCompensator> createDefault(int type); 00063 00064 /** 00065 @param corners Source image top-left corners 00066 @param images Source images 00067 @param masks Image masks to update (second value in pair specifies the value which should be used 00068 to detect where image is) 00069 */ 00070 void feed(const std::vector<Point> &corners, const std::vector<UMat> &images, 00071 const std::vector<UMat> &masks); 00072 /** @overload */ 00073 virtual void feed(const std::vector<Point> &corners, const std::vector<UMat> &images, 00074 const std::vector<std::pair<UMat,uchar> > &masks) = 0; 00075 /** @brief Compensate exposure in the specified image. 00076 00077 @param index Image index 00078 @param corner Image top-left corner 00079 @param image Image to process 00080 @param mask Image mask 00081 */ 00082 virtual void apply(int index, Point corner, InputOutputArray image, InputArray mask) = 0; 00083 }; 00084 00085 /** @brief Stub exposure compensator which does nothing. 00086 */ 00087 class CV_EXPORTS NoExposureCompensator : public ExposureCompensator 00088 { 00089 public: 00090 void feed(const std::vector<Point> &/*corners*/, const std::vector<UMat> &/*images*/, 00091 const std::vector<std::pair<UMat,uchar> > &/*masks*/) { } 00092 void apply(int /*index*/, Point /*corner*/, InputOutputArray /*image*/, InputArray /*mask*/) { } 00093 }; 00094 00095 /** @brief Exposure compensator which tries to remove exposure related artifacts by adjusting image 00096 intensities, see @cite BL07 and @cite WJ10 for details. 00097 */ 00098 class CV_EXPORTS GainCompensator : public ExposureCompensator 00099 { 00100 public: 00101 void feed(const std::vector<Point> &corners, const std::vector<UMat> &images, 00102 const std::vector<std::pair<UMat,uchar> > &masks); 00103 void apply(int index, Point corner, InputOutputArray image, InputArray mask); 00104 std::vector<double> gains() const; 00105 00106 private: 00107 Mat_<double> gains_; 00108 }; 00109 00110 /** @brief Exposure compensator which tries to remove exposure related artifacts by adjusting image block 00111 intensities, see @cite UES01 for details. 00112 */ 00113 class CV_EXPORTS BlocksGainCompensator : public ExposureCompensator 00114 { 00115 public: 00116 BlocksGainCompensator(int bl_width = 32, int bl_height = 32) 00117 : bl_width_(bl_width), bl_height_(bl_height) {} 00118 void feed(const std::vector<Point> &corners, const std::vector<UMat> &images, 00119 const std::vector<std::pair<UMat,uchar> > &masks); 00120 void apply(int index, Point corner, InputOutputArray image, InputArray mask); 00121 00122 private: 00123 int bl_width_, bl_height_; 00124 std::vector<UMat> gain_maps_; 00125 }; 00126 00127 //! @} 00128 00129 } // namespace detail 00130 } // namespace cv 00131 00132 #endif // __OPENCV_STITCHING_EXPOSURE_COMPENSATE_HPP__ 00133
Generated on Tue Jul 12 2022 16:42:38 by 1.7.2