KSquare Utilities
Histogram.h
Go to the documentation of this file.
1 /* Histogram.h -- Class that represents a single Histogram.
2  * Copyright (C) 1994-2011 Kurt Kramer
3  * For conditions of distribution and use, see copyright notice in KKB.h
4  */
5 #ifndef _HISTOGRAM_
6 #define _HISTOGRAM_
7 
8 #include "KKBaseTypes.h"
9 #include "KKStr.h"
10 
11 
12 /**
13  *@class KKB::Histogram
14  *@brief Used to manage the construction of a Histogram.
15  */
16 namespace KKB
17 {
18  #ifndef _RASTER_
19  class Raster;
20  typedef Raster* RasterPtr;
21  #endif
22 
23 
24  class Histogram
25  {
26  public:
27  Histogram (float _minValue,
28  kkint32 _numOfBuckets,
29  float _bucketSize,
30  bool _wrapArround
31  );
32 
33  ~Histogram ();
34 
35  kkint32 AreaInRange (kkint32 minBucket,
36  kkint32 maxBucket
37  ) const;
38 
39  float AreaInRangePercent (kkint32 minBucket,
40  kkint32 maxBucket
41  ) const;
42 
43  float AverageOfMaxBucket () const;
44 
45  float AverageOfMaxBucketInRange (kkint32 firstBucket,
46  kkint32 lastBucket
47  ) const;
48 
49 
51  kkint32 maxBucket
52  ) const;
53 
54  float AverageOfMinBucketInRange (kkint32 minBucket,
55  kkint32 maxBucket
56  ) const;
57 
58  float Bucket (kkint32 bucket) const;
59 
60  float BucketSize () const {return bucketSize;}
61 
62  void CalculatePeaks (kkint32 threshold);
63 
64  float CountOfMaxBucket () const;
65 
66  RasterPtr CreateGraph () const;
67 
68  RasterPtr CreateGraph (kkint32 barSize) const;
69 
70  Histogram* Equalized ();
71 
72  kkint32* EqualizedMapTable () {return equalizedMapTable;}
73 
74  void GetStats (float& min,
75  float& max,
76  float& mean,
77  float& variance
78  );
79 
80  kkint32 GetPeakBucket (kkint32 peakNum);
81 
83 
84  float GetPeakAvgByHighestOrder (kkint32 peakNum);
85 
86  void Increment (float val);
87 
88  bool IsBucketAPeak (kkint32 bucket,
89  kkint32 tolerance
90  ) const;
91 
92  kkint32 MaxBucketIdx () const;
93 
94  float MinValue () const {return minValue;}
95 
96  kkint32 NumOfBuckets () const {return numOfBuckets;}
97 
98  void PrintTable (ostream& o);
99 
100  void Save (KKStr fileName) const;
101 
102  void SaveGraphImage (const KKStr& fileName) const;
103 
104  void SaveGraphImage (const KKStr& fileName,
105  kkint32 barSize
106  ) const;
107 
108  Histogram* Smooth (kkint32 smoothWidth);
109 
110  float TotalCount () const {return totalCount;}
111 
112  private:
113  float bucketSize;
114  float* buckets;
115  float* bucketTotals;
116 
117  kkint32* equalizedMapTable;
118 
119  float minValue;
120 
121  kkint32 numOfBuckets;
122 
123  vector<kkint32> peaks;
124 
125  float range;
126 
127  float totalCount; // Total of all Buckets
128  float totalVal;
129 
130  bool wrapArround;
131  }; /* Histogram */
132 
133  typedef Histogram* HistogramPtr;
134 
135 } /* namespace KKB; */
136 
137 #endif
void CalculatePeaks(kkint32 threshold)
Definition: Histogram.cpp:756
kkint32 MaxBucketIdx() const
Definition: Histogram.cpp:76
__int32 kkint32
Definition: KKBaseTypes.h:88
void Save(KKStr fileName) const
Definition: Histogram.cpp:529
kkint32 NumOfBuckets() const
Definition: Histogram.h:96
float AreaInRangePercent(kkint32 minBucket, kkint32 maxBucket) const
Definition: Histogram.cpp:1036
A class that is used by to represent a single image in memory.
Definition: Raster.h:108
float MinValue() const
Definition: Histogram.h:94
float AverageOfMaxBucketExcludingRange(kkint32 minBucket, kkint32 maxBucket) const
Definition: Histogram.cpp:967
float AverageOfMinBucketInRange(kkint32 minBucket, kkint32 maxBucket) const
Definition: Histogram.cpp:930
RasterPtr CreateGraph() const
Definition: Histogram.cpp:162
void PrintTable(ostream &o)
Definition: Histogram.cpp:1048
RasterPtr CreateGraph(kkint32 barSize) const
Definition: Histogram.cpp:337
kkint32 GetPeakByHighestOrder(kkint32 peakNum)
Definition: Histogram.cpp:785
float AverageOfMaxBucketInRange(kkint32 firstBucket, kkint32 lastBucket) const
Definition: Histogram.cpp:891
KKTHread * KKTHreadPtr
kkint32 GetPeakBucket(kkint32 peakNum)
Definition: Histogram.cpp:771
float GetPeakAvgByHighestOrder(kkint32 peakNum)
Definition: Histogram.cpp:820
Histogram * Smooth(kkint32 smoothWidth)
Definition: Histogram.cpp:585
static KKStr Concat(const std::vector< std::string > &values)
Concatenates the list of &#39;std::string&#39; strings.
Definition: KKStr.cpp:1082
float TotalCount() const
Definition: Histogram.h:110
Histogram(float _minValue, kkint32 _numOfBuckets, float _bucketSize, bool _wrapArround)
Definition: Histogram.cpp:24
bool IsBucketAPeak(kkint32 bucket, kkint32 tolerance) const
Definition: Histogram.cpp:703
float CountOfMaxBucket() const
Definition: Histogram.cpp:113
kkint32 * EqualizedMapTable()
Definition: Histogram.h:72
void GetStats(float &min, float &max, float &mean, float &variance)
Definition: Histogram.cpp:1071
Histogram * Equalized()
Definition: Histogram.cpp:848
void SaveGraphImage(const KKStr &fileName) const
Definition: Histogram.cpp:510
void SaveGraphImage(const KKStr &fileName, kkint32 barSize) const
Definition: Histogram.cpp:518
float AverageOfMaxBucket() const
Definition: Histogram.cpp:98
void Increment(float val)
Definition: Histogram.cpp:137
float Bucket(kkint32 bucket) const
Definition: Histogram.cpp:122
Used to manage the construction of a Histogram.
Definition: Histogram.h:24
kkint32 AreaInRange(kkint32 minBucket, kkint32 maxBucket) const
Definition: Histogram.cpp:1010
float BucketSize() const
Definition: Histogram.h:60