OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimTieMeasurementGenerator.h
Go to the documentation of this file.
1 //----------------------------------------------------------------------------
2 //
3 // License: See top level LICENSE.txt file.
4 //
5 // Author: David Hicks
6 //
7 //
8 // Description: Automatic tie measurement extraction.
9 //----------------------------------------------------------------------------
10 #ifndef ossimTieMeasurementGenerator_HEADER
11 #define ossimTieMeasurementGenerator_HEADER 1
12 
13 #include <ossim/base/ossimObject.h>
14 #include <ossim/base/ossimDpt.h>
15 #include <ossim/base/ossimString.h>
17 #include "ossimIvtGeomXform.h"
18 #include <opencv/cv.h>
19 #include <opencv2/features2d/features2d.hpp>
20 #include <ctime>
21 #include <vector>
22 #include <iostream>
23 
24 typedef std::vector<ossimDpt> DptVec_t;
25 
26 class ossimImageSource;
27 
28 
31 {
32 public:
33 
34  // Constructor/initializer
36  bool init(std::ostream& report = cout);
37 
38  virtual bool setImageList(std::vector<ossimImageSource*> src);
39 
40  // Define collection ROIs, coordinate system depends on derived class use. List of AOIs
41  // must correspond to the list of images.
42  virtual bool setROIs(std::vector<ossimIrect> roi);
43 
44  bool isValidCollectionBox() const {return m_validBox;}
45 
46  // Measurement collection
47  bool run();
48 
49  // Report run parameters
50  void summarizeRun() const;
51 
52  // Destructor
54 
55  // Patch grid configuration accessors
56  void setUseGrid(const bool useGrid) {m_useGrid = useGrid;}
57  bool getUseGrid() const {return m_useGrid;}
58  bool setGridSize(const ossimIpt& gridDimensions);
59  ossimIpt getGridSize() const {return m_gridSize;}
60 
61  // Max matches in patch accessors
62  bool setMaxMatches(const int& maxMatches);
63  int getMaxMatches() const {return m_maxMatches;}
64 
65  // Set the feature detector
66  bool setFeatureDetector(const ossimString& name);
67  ossimString getFeatureDetector() const {return m_detectorName;}
68 
69  // Set the descriptor-extractor
70  bool setDescriptorExtractor(const ossimString& name);
71  ossimString getDescriptorExtractor() const {return m_extractorName;}
72 
73  // Set the matcher
74  bool setDescriptorMatcher(const ossimString& name);
75  ossimString getDescriptorMatcher() const {return m_matcherName;}
76 
77  // Measured point accessors
78  int numMeasurements() const { return m_numMeasurements; }
79  ossimDpt pointIndexedAt(const ossim_uint32 imgIdx, const ossim_uint32 measIdx);
80 
81  // OpenCV drawMatches window
82  void closeCvWindow(const bool waitKeyPress = false);
83  void setShowCvWindow(const bool showCvWindow) {m_showCvWindow = showCvWindow;}
84  bool getShowCvWindow() const {return m_showCvWindow;}
85 
86 protected:
87 
88  bool m_initOK;
89 
90  // Initialize patch reference positions
91  bool refreshCollectionTraits();
92 
93  cv::Ptr<cv::Feature2D> createFeature2D(const ossimString& name);
94 
95  // Image-related members
96  std::vector<ossimImageSource*> m_src;
99  cv::Mat m_imgA;
100  cv::Mat m_imgB;
101 
102  // Measurement count parameters
105 
106  // Patch traits
112 
113  // Grid size for matcher
114  bool m_useGrid;
116 
117  // Patch reference point (center)
120 
121  // Measurement containers
124 
125  // Editing parameters
127 
128  // Pointer to detector
130  cv::Ptr<cv::Feature2D> m_detector;
131 
132  // Pointer to descriptor extractor
134  cv::Ptr<cv::DescriptorExtractor> m_extractor;
135 
136  // Pointer to matcher
138  cv::Ptr<cv::DescriptorMatcher> m_matcher;
139 
140  // Measurement run report
142 
143  // Results window
144  void showCvResultsWindow(
145  std::vector<cv::KeyPoint> keypointsA,
146  std::vector<cv::KeyPoint> keypointsB,
147  std::vector<cv::DMatch> goodMatches);
151 };
152 #endif // #ifndef ossimTieMeasurementGenerator_HEADER
virtual bool setDescriptorExtractor(const ossimString &name)=0
void setShowCvWindow(const bool showCvWindow)
ossimRefPtr< ossimIvtGeomXform > m_igxA
cv::Ptr< cv::DescriptorExtractor > m_extractor
virtual bool init(std::ostream &report=std::cout)=0
virtual void summarizeRun() const =0
ossimRefPtr< ossimIvtGeomXform > m_igxB
virtual bool setFeatureDetector(const ossimString &name)=0
virtual bool setDescriptorMatcher(const ossimString &name)=0
virtual void closeCvWindow(const bool waitKeyPress=false)=0
unsigned int ossim_uint32
virtual bool setGridSize(const ossimIpt &gridDimensions)=0
std::vector< ossimDpt > DptVec_t
#define OSSIM_DLL
virtual ossimDpt pointIndexedAt(const ossim_uint32 imgIdx, const ossim_uint32 measIdx)=0
virtual bool setImageList(std::vector< ossimImageSource *> src)=0
std::vector< ossimImageSource * > m_src
cv::Ptr< cv::DescriptorMatcher > m_matcher
virtual bool setMaxMatches(const int &maxMatches)=0
virtual bool setROIs(std::vector< ossimIrect > roi)=0
std::basic_ostream< char > ostream
Base class for char output streams.
Definition: ossimIosFwd.h:23