PTOptimizer.h

Go to the documentation of this file.
00001 // -*- c-basic-offset: 4 -*-
00028 #ifndef _PTOPTIMIZER_H
00029 #define _PTOPTIMIZER_H
00030 
00031 #include <algorithms/PanoramaAlgorithm.h>
00032 
00033 #include <hugin_shared.h>
00034 #include <set>
00035 #include <panodata/PanoramaData.h>
00036 #include <panotools/PanoToolsOptimizerWrapper.h>
00037 
00038 namespace HuginBase {
00039     
00040     
00042     class IMPEX PTOptimizer : public PanoramaAlgorithm
00043     {
00044     
00045         public:
00047             explicit PTOptimizer(PanoramaData& panorama)
00048              : PanoramaAlgorithm(panorama)
00049             {};
00050         
00052             virtual ~PTOptimizer()
00053             {}
00054             
00055             
00056         public:
00058             virtual bool modifiesPanoramaData() const
00059                 { return true; }
00060             
00062             virtual bool runAlgorithm();
00063     };
00064     
00066     class IMPEX RANSACOptimizer : public PanoramaAlgorithm
00067     {
00068         public:
00069             enum Mode {AUTO, HOMOGRAPHY, RPY, RPYV, RPYVB};
00070 
00072             RANSACOptimizer(PanoramaData& panorama, int i1, int i2, double maxError, Mode mode=RPY)
00073                 : PanoramaAlgorithm(panorama), o_i1(i1), o_i2(i2),
00074                   o_maxError(maxError), o_mode(mode)
00075             {};
00076         
00078             virtual ~RANSACOptimizer()
00079             {}
00080             
00081             
00082         public:
00084             virtual bool modifiesPanoramaData() const
00085                 { return true; }
00086 
00087             static std::vector<int> findInliers(PanoramaData & pano, int i1, int i2, double maxError,
00088                                                 Mode mode=RPY);
00089             
00091             virtual bool runAlgorithm();
00092 
00093         private:
00094             int o_i1, o_i2;
00095             double o_maxError;
00096             std::vector<int> o_inliers;
00097             Mode o_mode;
00098     };
00099     
00100     
00102     class IMPEX AutoOptimise : public PTOptimizer
00103     {
00104         
00105         public:
00107             AutoOptimise(PanoramaData& panorama, bool optRoll=true)
00108              : PTOptimizer(panorama)
00109             {};
00110         
00112             virtual ~AutoOptimise()
00113             {}
00114             
00115         
00116         public:
00118             static void autoOptimise(PanoramaData& pano, bool optRoll=true);
00119 
00120         public:
00122             virtual bool runAlgorithm()
00123             {
00124                 autoOptimise(o_panorama);
00125                 return true; // let's hope so.
00126             }
00127 
00128     };
00129     
00131     class IMPEX SmartOptimizerStub
00132     {
00133         public:
00135             enum OptMode {
00136                 OPT_POS=1,
00137                 OPT_B=2, 
00138                 OPT_AC=4, 
00139                 OPT_DE=8, 
00140                 OPT_HFOV=16, 
00141                 OPT_GT=32, 
00142                 OPT_VIG=64, 
00143                 OPT_VIGCENTRE=128, 
00144                 OPT_EXP=256, 
00145                 OPT_WB=512, 
00146                 OPT_RESP=1024
00147             };
00148             
00150             static OptimizeVector createOptVars(const PanoramaData& optPano, int mode, unsigned anchorImg=0);   
00151     };
00152     
00153     class IMPEX SmartOptimise : public PTOptimizer, protected SmartOptimizerStub
00154     {
00155         
00156         public:
00158             explicit SmartOptimise(PanoramaData& panorama)
00159              : PTOptimizer(panorama)
00160             {};
00161         
00163             virtual ~SmartOptimise()
00164             {}
00165         
00166         public:
00168             static void smartOptimize(PanoramaData& pano);
00169         
00170             
00171         public:
00173             virtual bool runAlgorithm()
00174             {
00175                 smartOptimize(o_panorama);
00176                 return true; // let's hope so.
00177             }
00178 
00179     };
00180     
00181 }//namespace
00182 
00183 #endif //_h

Generated on 26 Aug 2016 for Hugintrunk by  doxygen 1.4.7