Isis 3 Programmer Reference
LowPassFilter.h
Go to the documentation of this file.
1 #ifndef LowPassFilter_h
2 #define LowPassFilter_h
3 
27 #include <string>
28 #include <vector>
29 
30 #include "IString.h"
31 #include "HiCalUtil.h"
32 #include "Module.h"
33 #include "QuickFilter.h"
34 #include "IException.h"
35 
36 namespace Isis {
37 
45  class LowPassFilter : public Module {
46 
47  public:
48  // Constructors and Destructor
49  LowPassFilter() : Module("LowPassFilter"), _width(3),
50  _iterations(1) { }
51  LowPassFilter(int width, int iterations = 1) :
52  Module("LowPassFilter"), _width(width), _iterations(iterations) { }
53 
54  LowPassFilter(const Module &c, int width = 3, int iterations = 1) :
55  Module("LowPassFilter", c), _width(width),
56  _iterations(iterations) {
57  _data = filterIterator(c.ref(), _width, _iterations);
58  _history.add(formHistory());
59  }
60 
61  LowPassFilter(const HiVector &v, const HiHistory &h,
62  int width = 3, int iterations = 1) :
63  Module("LowPassFilter", h), _width(width),
64  _iterations(iterations) {
65  _data = filterIterator(v, _width, _iterations);
66  _history.add(formHistory());
67  }
68 
70  virtual ~LowPassFilter() { }
71 
72  void Process(const HiVector &v) {
73  _data = filterIterator(v, _width, _iterations);
74  _history.clear();
75  _history.add(formHistory());
76  }
77 
78  inline int Width() const { return (_width); }
79 
80  private:
81  int _width;
82  int _iterations; // Number iterations to apply filter
83 
84  QString formHistory() {
85  return (QString("LowPassFilter(Width[" + ToString(_width) +
86  "],Iters["+ToString(_iterations)+"])"));
87  }
88 
89  HiVector filterIterator(const HiVector &v, int width, int iterations) {
90  HiVector vout(v.copy());
91  for (int i = 0 ; i < iterations; i++) {
92  vout = filter(vout,width);
93  }
94  return (vout);
95  }
96 
97  HiVector filter(const HiVector &v, int width) {
98  QuickFilter lowpass(v.dim(), width, 1);
99  lowpass.AddLine(&v[0]);
100  HiVector vout(v.dim());
101  for (int i = 0 ; i < v.dim() ; i ++) {
102  vout[i] = lowpass.Average(i);
103  }
104  return (vout);
105  }
106  };
107 
108 } // namespace Isis
109 #endif
110 
const HiVector & ref() const
Return data via a const reference.
Definition: Module.h:126
HiVector _data
Data vector.
Definition: Module.h:166
virtual ~LowPassFilter()
Destructor.
Definition: LowPassFilter.h:70
HiHistory _history
Hierarchial component history.
Definition: Module.h:167
Module manages HiRISE calibration vectors from various sources.
Definition: Module.h:54
Compute a low pass filter from a Module class content.
Definition: LowPassFilter.h:45
void Process(const HiVector &v)
Default processing behavior makes a reference copy of data array.
Definition: LowPassFilter.h:72
Namespace for ISIS/Bullet specific routines.
Definition: Apollo.h:31
QString ToString(const T &value)
Helper function to convert values to strings.
Definition: HiCalUtil.h:260
int _width
Filter width.
Definition: LowPassFilter.h:81
TNT::Array1D< double > HiVector
1-D Buffer
Definition: HiCalTypes.h:40