Isis 3 Programmer Reference
ControlNetStatistics.h
1#ifndef _CONTROLNETSTATISTICS_H_
2#define _CONTROLNETSTATISTICS_H_
3
10/* SPDX-License-Identifier: CC0-1.0 */
11
12#include <QMap>
13#include <QVector>
14
15#include "Progress.h"
16#include "PvlGroup.h"
17#include "SerialNumberList.h"
18#include "Statistics.h"
19
20namespace Isis {
21 class ControlNet;
22 class Progress;
23 class PvlGroup;
24
64 public:
66 ControlNetStatistics(ControlNet *pCNet, const QString &psSerialNumFile, Progress *pProgress = 0);
67
69 ControlNetStatistics(ControlNet *pCNet, Progress *pProgress = 0);
70
73
75 enum ePointDetails { total, ignore, locked, fixed, constrained, freed };
76 static const int numPointDetails = 6;
77
79 enum ePointIntStats { totalPoints, validPoints, ignoredPoints, fixedPoints, constrainedPoints, freePoints, editLockedPoints,
80 totalMeasures, validMeasures, ignoredMeasures, editLockedMeasures };
81 static const int numPointIntStats = 11;
82
84 enum ePointDoubleStats { avgResidual, minResidual, maxResidual, minLineResidual, maxLineResidual, minSampleResidual, maxSampleResidual,
85 avgPixelShift, minPixelShift, maxPixelShift, minLineShift, maxLineShift, minSampleShift, maxSampleShift,
86 minGFit, maxGFit, minEccentricity, maxEccentricity, minPixelZScore, maxPixelZScore};
87 static const int numPointDblStats = 20;
88
90 enum ImageStats { imgSamples, imgLines, imgTotalPoints, imgIgnoredPoints, imgFixedPoints, imgLockedPoints, imgLocked,
91 imgConstrainedPoints, imgFreePoints, imgConvexHullArea, imgConvexHullRatio };
92 static const int numImageStats = 11;
93
95 void GenerateImageStats();
96
98 void PrintImageStats(const QString &psImageFile);
99
101 QVector<double> GetImageStatsBySerialNum(QString psSerialNum) const;
102
104 void GeneratePointStats(const QString &psPointFile);
105
107 void GenerateControlNetStats(PvlGroup &pStatsGrp);
108
110 int NumValidPoints() const {
111 return (*mPointIntStats.find(validPoints));
112 }
113
115 int NumFixedPoints() const {
116 return (*mPointIntStats.find(fixedPoints));
117 }
118
121 return (*mPointIntStats.find(constrainedPoints));
122 }
123
125 int NumFreePoints() const {
126 return (*mPointIntStats.find(freePoints));
127 }
128
130 int NumIgnoredPoints() const {
131 return (*mPointIntStats.find(ignoredPoints));
132 }
133
136 return (*mPointIntStats.find(editLockedPoints));
137 }
138
140 int NumMeasures() const {
141 return (*mPointIntStats.find(totalMeasures));
142 }
143
145 int NumValidMeasures() const {
146 return (*mPointIntStats.find(validMeasures));
147 }
148
150 int NumIgnoredMeasures() const {
151 return (*mPointIntStats.find(ignoredMeasures));
152 }
153
156 return (*mPointIntStats.find(editLockedMeasures));
157 }
158
160 double GetAverageResidual() const {
161 return (*mPointDoubleStats.find(avgResidual));
162 }
163
165 double GetMinimumResidual() const {
166 return (*mPointDoubleStats.find(minResidual));
167 }
168
170 double GetMaximumResidual() const {
171 return (*mPointDoubleStats.find(maxResidual));
172 }
173
175 double GetMinLineResidual() const {
176 return (*mPointDoubleStats.find(minLineResidual));
177 }
178
180 double GetMinSampleResidual() const {
181 return (*mPointDoubleStats.find(minSampleResidual));
182 }
183
185 double GetMaxLineResidual() const {
186 return (*mPointDoubleStats.find(maxLineResidual));
187 }
188
190 double GetMaxSampleResidual() const {
191 return (*mPointDoubleStats.find(maxSampleResidual));
192 }
193
195 double GetMinLineShift() const {
196 return (*mPointDoubleStats.find(minLineShift));
197 }
198
200 double GetMaxLineShift() const {
201 return (*mPointDoubleStats.find(maxLineShift));
202 }
203
205 double GetMinSampleShift() const {
206 return (*mPointDoubleStats.find(minSampleShift));
207 }
208
210 double GetMaxSampleShift() const {
211 return (*mPointDoubleStats.find(maxSampleShift));
212 }
213
215 double GetMinPixelShift() const {
216 return (*mPointDoubleStats.find(minPixelShift));
217 }
218
220 double GetMaxPixelShift() const {
221 return (*mPointDoubleStats.find(maxPixelShift));
222 }
223
225 double GetAvgPixelShift() const {
226 return (*mPointDoubleStats.find(avgPixelShift));
227 }
228
229 protected:
233
234 private:
235 QMap<int, int> mPointIntStats;
236 QMap<int, double> mPointDoubleStats;
237 QMap<QString, QVector<double> > mImageMap;
238 QMap<QString, bool> mSerialNumMap;
239
241 void GetPointIntStats();
242
244 void GetPointDoubleStats();
245
246 void UpdateMinMaxStats(const Statistics & stats,
249
252
254 void InitSerialNumMap();
255
256 int numCNetImages;
257
259 };
260}
261#endif
a control network
Definition ControlNet.h:258
ePointDoubleStats
Enumeration for Point stats like Tolerances, PixelShifts which have double data.
ControlNet * mCNet
Control Network.
int NumFixedPoints() const
Returns the Number of Fixed Points in the Control Net.
int NumValidPoints() const
Returns the Number of Valid (Not Ignored) Points in the Control Net.
double GetMinLineShift() const
Get Min and Max LineShift.
double GetMinimumResidual() const
Determine the minimum error of all points in the network.
double GetMaximumResidual() const
Determine the maximum error of all points in the network.
QMap< QString, QVector< double > > mImageMap
Contains stats by Image/Serial Num.
int NumFreePoints() const
Returns the number of Constrained Points in Control Net.
int NumIgnoredPoints() const
Returns the number of ignored points.
Statistics mConvexHullRatioStats
min, max, average convex hull stats
QVector< double > GetImageStatsBySerialNum(QString psSerialNum) const
Returns the Image Stats by Serial Number.
ePointDetails
Enumeration for Point Statistics.
int NumValidMeasures() const
Returns the total Number of valid Measures in the Control Net.
int NumEditLockedMeasures() const
Returns total number of edit locked measures in the network.
double GetAvgPixelShift() const
Get network Avg PixelShift.
void PrintImageStats(const QString &psImageFile)
Print the Image Stats into specified output file.
void GetPointDoubleStats()
Get Point stats for Residuals and Shifts.
double GetMinSampleResidual() const
Determine the minimum sample error of all points in the network.
int NumIgnoredMeasures() const
Returns the total Number of Ignored Measures in the Control Net.
void InitPointDoubleStats()
Init Pointstats std::vector.
ImageStats
Enumeration for image stats.
double GetMaxLineResidual() const
Determine the maximum line error of all points in the network.
void InitSerialNumMap()
Init SerialNum std::map.
double GetMaxLineShift() const
Get network Max LineShift.
QMap< int, int > mPointIntStats
Contains QMap of different count stats.
double GetMaxSampleResidual() const
Determine the maximum sample error of all points in the network.
void GenerateControlNetStats(PvlGroup &pStatsGrp)
Generate the Control Net Stats into the PvlGroup.
double GetMinPixelShift() const
Get network Min PixelShift.
double GetMaxSampleShift() const
Get network Max SampleShift.
int NumConstrainedPoints() const
Returns the number of Constrained Points in Control Net.
void GenerateImageStats()
Generate stats like Total, Ignored, Fixed Points in an Image.
int NumEditLockedPoints() const
Returns total number of edit locked points.
SerialNumberList mSerialNumList
Serial Number List.
QMap< int, double > mPointDoubleStats
Contains QMap of different computed stats.
QMap< QString, bool > mSerialNumMap
Whether serial# is part of ControlNet.
void GeneratePointStats(const QString &psPointFile)
Generate stats like Ignored, Fixed, Total Measures, Ignored by Control Point.
Progress * mProgress
Progress state.
ePointIntStats
Enumeration for Point int stats for counts such as valid points, measures etc.
double GetAverageResidual() const
Determine the average error of all points in the network.
int NumMeasures() const
Returns the total Number of Measures in the Control Net.
double GetMaxPixelShift() const
Get network Max PixelShift.
double GetMinSampleShift() const
Get network Min SampleShift.
double GetMinLineResidual() const
Determine the minimum line error of all points in the network.
ControlNetStatistics(ControlNet *pCNet, const QString &psSerialNumFile, Progress *pProgress=0)
Constructor.
void GetPointIntStats()
Get point count stats.
Program progress reporter.
Definition Progress.h:42
Contains multiple PvlContainers.
Definition PvlGroup.h:41
Serial Number list generator.
This class is used to accumulate statistics on double arrays.
Definition Statistics.h:94
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16