Isis 3.0 Developer's Reference (API) |
Home |
00001 #ifndef Statistics_h 00002 #define Statistics_h 00003 00024 #include "SpecialPixel.h" 00025 #include "Constants.h" 00026 00027 namespace Isis { 00078 class Statistics { 00079 public: 00080 Statistics(); 00081 ~Statistics(); 00082 00083 void Reset(); 00084 void AddData(const double *data, const unsigned int count); 00094 inline void AddData(const double data) { 00095 p_totalPixels++; 00096 if(Isis::IsValidPixel(data) && InRange(data)) { 00097 p_sum += data; 00098 p_sumsum += data * data; 00099 if(data < p_minimum) p_minimum = data; 00100 if(data > p_maximum) p_maximum = data; 00101 p_validPixels++; 00102 } 00103 else if(Isis::IsNullPixel(data)) { 00104 p_nullPixels++; 00105 } 00106 else if(Isis::IsHisPixel(data)) { 00107 p_hisPixels++; 00108 } 00109 else if(Isis::IsHrsPixel(data)) { 00110 p_hrsPixels++; 00111 } 00112 else if(Isis::IsLisPixel(data)) { 00113 p_lisPixels++; 00114 } 00115 else if(Isis::IsLrsPixel(data)) { 00116 p_lrsPixels++; 00117 } 00118 else if(AboveRange(data)) { 00119 p_overRangePixels++; 00120 } 00121 else { 00122 p_underRangePixels++; 00123 } 00124 } 00125 00126 void RemoveData(const double *data, const unsigned int count); 00127 void RemoveData(const double data); 00128 void SetValidRange(const double minimum = Isis::ValidMinimum, const double maximum = Isis::ValidMaximum); 00129 00130 double ValidMinimum() const { 00131 return p_validMinimum; 00132 } 00133 double ValidMaximum() const { 00134 return p_validMaximum; 00135 } 00136 bool InRange(const double value) { 00137 return (value >= p_validMinimum && value <= p_validMaximum); 00138 } 00139 bool AboveRange(const double value) { 00140 return (value > p_validMaximum); 00141 } 00142 bool BelowRange(const double value) { 00143 return (value < p_validMinimum); 00144 } 00145 00146 double Average() const; 00147 double StandardDeviation() const; 00148 double Variance() const; 00149 double Rms() const; 00150 00151 double Minimum() const; 00152 double Maximum() const; 00153 double ChebyshevMinimum(const double percent = 99.5) const; 00154 double ChebyshevMaximum(const double percent = 99.5) const; 00155 double BestMinimum(const double percent = 99.5) const; 00156 double BestMaximum(const double percent = 99.5) const; 00157 double ZScore(const double value) const; 00158 00159 BigInt TotalPixels() const; 00160 BigInt ValidPixels() const; 00161 BigInt OverRangePixels() const; 00162 BigInt UnderRangePixels() const; 00163 BigInt NullPixels() const; 00164 BigInt LisPixels() const; 00165 BigInt LrsPixels() const; 00166 BigInt HisPixels() const; 00167 BigInt HrsPixels() const; 00168 BigInt OutOfRangePixels() const; 00169 00170 00176 double Sum() const { 00177 return p_sum; 00178 }; 00179 00185 double SumSquare() const { 00186 return p_sumsum; 00187 }; 00188 00189 private: 00190 double p_sum; 00191 double p_sumsum; 00192 double p_minimum; 00193 double p_maximum; 00194 double p_validMinimum; 00195 double p_validMaximum; 00196 BigInt p_totalPixels; 00197 BigInt p_validPixels; 00198 BigInt p_nullPixels; 00199 BigInt p_lrsPixels; 00200 BigInt p_lisPixels; 00201 BigInt p_hrsPixels; 00202 BigInt p_hisPixels; 00203 BigInt p_underRangePixels; 00204 BigInt p_overRangePixels; 00205 bool p_removedData; 00207 }; 00208 } // end namespace isis 00209 00210 #endif 00211