USGS

Isis 3.0 Developer's Reference (API)

Home

ControlNetStatistics.h

Go to the documentation of this file.
00001 #ifndef _CONTROLNETSTATISTICS_H_
00002 #define _CONTROLNETSTATISTICS_H_
00003 
00004 #include <map>
00005 #include <iostream>
00006 #include <vector>
00007 #include "Progress.h"
00008 #include "PvlGroup.h"
00009 #include "SerialNumberList.h"
00010 #include "Statistics.h"
00011 
00035 namespace Isis {
00036   class ControlNet;
00037   class ControlCubeGraphNode;
00038   class Progress;
00039   class PvlGroup;
00040 
00074   class ControlNetStatistics {
00075     public:
00077       ControlNetStatistics(ControlNet *pCNet, const QString &psSerialNumFile, Progress *pProgress = 0);
00078 
00080       ControlNetStatistics(ControlNet *pCNet, Progress *pProgress = 0);
00081 
00083       ~ControlNetStatistics();
00084 
00086       enum ePointDetails { total, ignore, locked, fixed, constrained, freed };
00087       static const int numPointDetails = 6;
00088 
00090       enum ePointIntStats { totalPoints, validPoints, ignoredPoints, fixedPoints, constrainedPoints, freePoints, editLockedPoints,
00091                             totalMeasures, validMeasures, ignoredMeasures, editLockedMeasures };
00092       static const int numPointIntStats = 11;
00093 
00095       enum ePointDoubleStats { avgResidual, minResidual, maxResidual, minLineResidual, maxLineResidual, minSampleResidual, maxSampleResidual,
00096                                avgPixelShift, minPixelShift, maxPixelShift, minLineShift, maxLineShift, minSampleShift, maxSampleShift,
00097                                minGFit, maxGFit, minEccentricity, maxEccentricity, minPixelZScore, maxPixelZScore};
00098       static const int numPointDblStats = 20;
00099 
00101       enum ImageStats { imgSamples, imgLines, imgTotalPoints, imgIgnoredPoints, imgFixedPoints, imgLockedPoints, imgLocked,
00102                         imgConstrainedPoints, imgFreePoints, imgConvexHullArea, imgConvexHullRatio };
00103       static const int numImageStats = 11;
00104 
00106       void GenerateImageStats();
00107 
00109       void PrintImageStats(const QString &psImageFile);
00110 
00112       std::vector<double> GetImageStatsBySerialNum(QString psSerialNum) const;
00113 
00115       void GeneratePointStats(const QString &psPointFile);
00116 
00118       void GenerateControlNetStats(PvlGroup &pStatsGrp);
00119 
00121       int NumValidPoints() const {
00122         return (*mPointIntStats.find(validPoints)).second;
00123       }
00124 
00126       int NumFixedPoints() const {
00127         return (*mPointIntStats.find(fixedPoints)).second;
00128       }
00129 
00131       int NumConstrainedPoints() const {
00132         return (*mPointIntStats.find(constrainedPoints)).second;
00133       }
00134 
00136       int NumFreePoints() const {
00137         return (*mPointIntStats.find(freePoints)).second;
00138       }
00139 
00141       int NumIgnoredPoints() const {
00142         return (*mPointIntStats.find(ignoredPoints)).second;
00143       }
00144 
00146       int NumEditLockedPoints() const {
00147         return (*mPointIntStats.find(editLockedPoints)).second;
00148       }
00149 
00151       int NumMeasures() const {
00152         return (*mPointIntStats.find(totalMeasures)).second;
00153       }
00154 
00156       int NumValidMeasures() const {
00157         return (*mPointIntStats.find(validMeasures)).second;
00158       }
00159 
00161       int NumIgnoredMeasures() const {
00162         return (*mPointIntStats.find(ignoredMeasures)).second;
00163       }
00164 
00166       int NumEditLockedMeasures() const {
00167         return (*mPointIntStats.find(editLockedMeasures)).second;
00168       }
00169 
00171       double GetAverageResidual() const {
00172         return (*mPointDoubleStats.find(avgResidual)).second;
00173       }
00174 
00176       double GetMinimumResidual() const {
00177         return (*mPointDoubleStats.find(minResidual)).second;
00178       }
00179 
00181       double GetMaximumResidual() const {
00182         return (*mPointDoubleStats.find(maxResidual)).second;
00183       }
00184 
00186       double GetMinLineResidual() const {
00187         return (*mPointDoubleStats.find(minLineResidual)).second;
00188       }
00189 
00191       double GetMinSampleResidual() const {
00192         return (*mPointDoubleStats.find(minSampleResidual)).second;
00193       }
00194 
00196       double GetMaxLineResidual() const {
00197         return (*mPointDoubleStats.find(maxLineResidual)).second;
00198       }
00199 
00201       double GetMaxSampleResidual() const {
00202         return (*mPointDoubleStats.find(maxSampleResidual)).second;
00203       }
00204 
00206       double GetMinLineShift() const {
00207         return (*mPointDoubleStats.find(minLineShift)).second;
00208       }
00209 
00211       double GetMaxLineShift() const {
00212         return (*mPointDoubleStats.find(maxLineShift)).second;
00213       }
00214 
00216       double GetMinSampleShift() const {
00217         return (*mPointDoubleStats.find(minSampleShift)).second;
00218       }
00219 
00221       double GetMaxSampleShift() const {
00222         return (*mPointDoubleStats.find(maxSampleShift)).second;
00223       }
00224 
00226       double GetMinPixelShift() const {
00227         return (*mPointDoubleStats.find(minPixelShift)).second;
00228       }
00229 
00231       double GetMaxPixelShift() const {
00232         return (*mPointDoubleStats.find(maxPixelShift)).second;
00233       }
00234 
00236       double GetAvgPixelShift() const {
00237         return (*mPointDoubleStats.find(avgPixelShift)).second;
00238       }
00239 
00240     protected:
00241       SerialNumberList mSerialNumList;           
00242       ControlNet *mCNet;                         
00243       Progress *mProgress;                       
00244       QList<ControlCubeGraphNode *> mCubeGraphNodes;
00245 
00246     private:
00247       std::map<int, int> mPointIntStats;           
00248       std::map<int, double> mPointDoubleStats;     
00249       std::map<QString, std::vector<double> > mImageMap; 
00250       std::map<QString, bool> mSerialNumMap;        
00251 
00253       void GetPointIntStats();
00254 
00256       void GetPointDoubleStats();
00257 
00258       void UpdateMinMaxStats(const Statistics & stats,
00259                              ePointDoubleStats min,
00260                              ePointDoubleStats max);
00261 
00263       void InitPointDoubleStats();
00264 
00266       void InitSerialNumMap();
00267 
00268       int numCNetImages;
00269 
00270       Statistics mConvexHullStats, mConvexHullRatioStats; 
00271   };
00272 }
00273 #endif