Isis 3 Programmer Reference
InterestOperator.h
1#ifndef InterestOperator_h
2#define InterestOperator_h
3
10/* SPDX-License-Identifier: CC0-1.0 */
11
12#include <string>
13#include <vector>
14#include "PvlGroup.h"
15#include "Camera.h"
16#include "UniversalGroundMap.h"
17#include "ControlNetValidMeasure.h"
18#include "ImageOverlapSet.h"
19
20#include "geos/geom/Point.h"
21#include "geos/geom/Coordinate.h"
22#include "geos/geom/MultiPolygon.h"
23#include "geos/util/GEOSException.h"
24
25namespace Isis {
26 class Chip;
27 class Pvl;
28 class Cube;
29 class PvlObject;
30 class ControlNet;
31 class ControlPoint;
32 class ControlMeasure;
33
110 public:
111 InterestOperator(Pvl &pPvl);
112
113 virtual ~InterestOperator();
114
115 void InitInterestOptions();
116
117 void SetPatternValidPercent(const double percent);
118 void SetPatternSampling(const double percent);
119 void SetSearchSampling(const double percent);
120 void SetTolerance(double tolerance);
121 void SetPatternReduction(std::vector<int> samples, std::vector<int> lines);
122
124 inline QString operatorName() const {
125 return mOperatorGrp["Name"];
126 };
127
129 bool Operate(Cube &pCube, UniversalGroundMap &pUnivGrndMap, int piSample, int piLine);
130
132 void Operate(ControlNet &pNewNet, QString psSerialNumFile, QString psOverlapListFile = "");
133
135 inline double InterestAmount() const {
136 return p_interestAmount;
137 };
138
140 inline double WorstInterest() const {
141 return p_worstInterest;
142 }
143
145 inline double CubeSample() const {
146 return p_cubeSample;
147 };
148
150 inline double CubeLine() const {
151 return p_cubeLine;
152 };
153
155 virtual bool CompareInterests(double int1, double int2);
156 void addGroup(Isis::PvlObject &obj); //???? check if used
157
159 void SetClipPolygon(const geos::geom::MultiPolygon &clipPolygon);
160
163
164 protected:
166 void Parse(Pvl &pPvl);
167
169 virtual double Interest(Chip &subCube) = 0;
170
172 const geos::geom::MultiPolygon *FindOverlap(Isis::ControlPoint &pCnetPoint);
173
175 const geos::geom::MultiPolygon *FindOverlapByImageFootPrint(Isis::ControlPoint &pCnetPoint);
176
179 void FindCnetRef(ControlNet &pNewNet);
180
182 void ProcessLocked_Point_Reference(ControlPoint &pCPoint, PvlObject &pPvlObj, int &piMeasuresModified);
183
185 int InterestByPoint(ControlPoint &pCnetPoint);
186
188 bool InterestByMeasure(int piMeasure, Isis::ControlMeasure &pCnetMeasure, Isis::Cube &pCube);
189
191 void InitInterestResults(int piIndex);
192
193 virtual int Padding();
194
195 double p_worstInterest, p_interestAmount;
196
198 geos::geom::MultiPolygon *p_clipPolygon;
199
201
202 private:
203 double p_cubeSample, p_cubeLine;
207
209 int p_deltaSamp, p_deltaLine, p_lines, p_samples;
210
212 typedef struct {
213 QString msSerialNum;
214 double mdInterest;
216 double mdBestLine;
218 double mdOrigLine;
219 double mdEmission;
220 double mdIncidence;
221 double mdDn;
223 bool mbValid;
228 };
229};
230
231#endif
A small chip of data used for pattern matching.
Definition Chip.h:86
a control measurement
a control network
Definition ControlNet.h:258
ControlNetValidMeasure class.
A single control point.
IO Handler for Isis Cubes.
Definition Cube.h:168
This class is used to find the overlaps between all the images in a list of serial numbers.
Interest Operator class.
void SetClipPolygon(const geos::geom::MultiPolygon &clipPolygon)
Set the Clip Polygon for points to be contained in the overlaps.
const geos::geom::MultiPolygon * FindOverlap(Isis::ControlPoint &pCnetPoint)
Find if a point is in the overlap.
virtual int Padding()
Sets an offset to pass in larger chips if operator requires it This is used to offset the subchip siz...
InterestOperator(Pvl &pPvl)
Create InterestOperator object.
Isis::ImageOverlapSet mOverlaps
Holds the overlaps from the Overlaplist.
bool InterestByMeasure(int piMeasure, Isis::ControlMeasure &pCnetMeasure, Isis::Cube &pCube)
Calculate interest for a measure by index.
const geos::geom::MultiPolygon * FindOverlapByImageFootPrint(Isis::ControlPoint &pCnetPoint)
Find imageoverlaps by finding the intersection of image footprints.
bool mbOverlaps
If Overlaplist exists.
int p_deltaSamp
Specified in the Pvl Operator group for the box car size.
double p_minimumInterest
Specified in the Pvl Operator group.
void ProcessLocked_Point_Reference(ControlPoint &pCPoint, PvlObject &pPvlObj, int &piMeasuresModified)
Process (Validate and Log) Point with Lock or with Referemce Measure Locked.
QString operatorName() const
Return name of the matching operator.
double p_cubeLine
Point in a cube from a chip perspective.
bool Operate(Cube &pCube, UniversalGroundMap &pUnivGrndMap, int piSample, int piLine)
Operate used by the app interestcube- to calculate interest by sample,line.
geos::geom::MultiPolygon * p_clipPolygon
Clipping polygon set by SetClipPolygon (line,samp)
void InitInterestResults(int piIndex)
Init Interest Results structure.
void FindCnetRef(ControlNet &pNewNet)
Find best ref for an entire control net by calculating the interest and moving point to a better inte...
double InterestAmount() const
Return the Interest Amount.
double WorstInterest() const
Return the Worst(least value) Interest.
int InterestByPoint(ControlPoint &pCnetPoint)
Calculate interest for a Control Point.
virtual ~InterestOperator()
Destroy InterestOperator object.
void Parse(Pvl &pPvl)
Parse the Interest specific keywords.
virtual double Interest(Chip &subCube)=0
Calculate the interest.
virtual bool CompareInterests(double int1, double int2)
Compare for int1 greater than / equal to int2.
Isis::PvlGroup Operator()
Return the Operator name.
double CubeSample() const
Return the search chip cube sample that best matched.
InterestResults * mtInterestResults
Holds the results of an interest computation.
double CubeLine() const
Return the search chip cube line that best matched.
Isis::PvlGroup mOperatorGrp
Operator group that created this projection.
void InitInterestOptions()
Initialise Interest Options to defaults.
Contains multiple PvlContainers.
Definition PvlGroup.h:41
Container for cube-like labels.
Definition Pvl.h:119
Contains Pvl Groups and Pvl Objects.
Definition PvlObject.h:61
Universal Ground Map.
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16
Structure to hold Interest Results.
QString msSerialNum
Serial Number of the Measure.
bool mbValid
Value of the interest operator result (success)
double mdOrigLine
Control Measure's original line.
double mdDn
Cube DN value at most interesting sample,line.
double mdEmission
Emission angle at most interesting sample,line.
double mdOrigSample
Control Measure's original sample.
double mdInterest
Resulting interest amt from InterestOperator.
double mdBestSample
Most interesting sample.
double mdBestLine
Most interesting line.
int miDeltaSample
The number of Samples the point has been moved.
int miDeltaLine
The number of Lines the point has been moved.
double mdIncidence
Incidence angle at most interesting sample,line.
double mdResolution
Camera resolution at most interesting sample,line.