USGS

Isis 3.0 Developer's Reference (API)

Home

Statistics.h
Go to the documentation of this file.
1 #ifndef Statistics_h
2 #define Statistics_h
3 
24 #include "SpecialPixel.h"
25 #include "Constants.h"
26 
27 namespace Isis {
78  class Statistics {
79  public:
80  Statistics();
81  ~Statistics();
82 
83  void Reset();
84  void AddData(const double *data, const unsigned int count);
94  inline void AddData(const double data) {
95  p_totalPixels++;
96  if(Isis::IsValidPixel(data) && InRange(data)) {
97  p_sum += data;
98  p_sumsum += data * data;
99  if(data < p_minimum) p_minimum = data;
100  if(data > p_maximum) p_maximum = data;
101  p_validPixels++;
102  }
103  else if(Isis::IsNullPixel(data)) {
104  p_nullPixels++;
105  }
106  else if(Isis::IsHisPixel(data)) {
107  p_hisPixels++;
108  }
109  else if(Isis::IsHrsPixel(data)) {
110  p_hrsPixels++;
111  }
112  else if(Isis::IsLisPixel(data)) {
113  p_lisPixels++;
114  }
115  else if(Isis::IsLrsPixel(data)) {
116  p_lrsPixels++;
117  }
118  else if(AboveRange(data)) {
119  p_overRangePixels++;
120  }
121  else {
122  p_underRangePixels++;
123  }
124  }
125 
126  void RemoveData(const double *data, const unsigned int count);
127  void RemoveData(const double data);
128  void SetValidRange(const double minimum = Isis::ValidMinimum, const double maximum = Isis::ValidMaximum);
129 
130  double ValidMinimum() const {
131  return p_validMinimum;
132  }
133  double ValidMaximum() const {
134  return p_validMaximum;
135  }
136  bool InRange(const double value) {
137  return (value >= p_validMinimum && value <= p_validMaximum);
138  }
139  bool AboveRange(const double value) {
140  return (value > p_validMaximum);
141  }
142  bool BelowRange(const double value) {
143  return (value < p_validMinimum);
144  }
145 
146  double Average() const;
147  double StandardDeviation() const;
148  double Variance() const;
149  double Rms() const;
150 
151  double Minimum() const;
152  double Maximum() const;
153  double ChebyshevMinimum(const double percent = 99.5) const;
154  double ChebyshevMaximum(const double percent = 99.5) const;
155  double BestMinimum(const double percent = 99.5) const;
156  double BestMaximum(const double percent = 99.5) const;
157  double ZScore(const double value) const;
158 
159  BigInt TotalPixels() const;
160  BigInt ValidPixels() const;
161  BigInt OverRangePixels() const;
162  BigInt UnderRangePixels() const;
163  BigInt NullPixels() const;
164  BigInt LisPixels() const;
165  BigInt LrsPixels() const;
166  BigInt HisPixels() const;
167  BigInt HrsPixels() const;
168  BigInt OutOfRangePixels() const;
169 
170 
176  double Sum() const {
177  return p_sum;
178  };
179 
185  double SumSquare() const {
186  return p_sumsum;
187  };
188 
189  private:
190  double p_sum;
191  double p_sumsum;
192  double p_minimum;
193  double p_maximum;
194  double p_validMinimum;
195  double p_validMaximum;
196  BigInt p_totalPixels;
197  BigInt p_validPixels;
198  BigInt p_nullPixels;
199  BigInt p_lrsPixels;
200  BigInt p_lisPixels;
201  BigInt p_hrsPixels;
202  BigInt p_hisPixels;
203  BigInt p_underRangePixels;
204  BigInt p_overRangePixels;
205  bool p_removedData;
207  };
208 } // end namespace isis
209 
210 #endif
211