SourceXtractorPlusPlus  0.19
SourceXtractor++, the next generation SExtractor
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Frame.h
Go to the documentation of this file.
1 
17 /*
18  * Frame.h
19  *
20  * Created on: Mar 13, 2017
21  * Author: mschefer
22  */
23 
24 #ifndef _SEFRAMEWORK_FRAME_FRAME_H_
25 #define _SEFRAMEWORK_FRAME_FRAME_H_
26 
27 #include <algorithm>
28 
29 #include "SEUtils/Types.h"
33 
34 namespace SourceXtractor {
35 
47 };
48 
49 template<typename T>
50 class Frame {
51 
52 public:
53 
54  class ImageFilter {
55  public:
56  virtual ~ImageFilter() = default;
57  virtual std::shared_ptr<Image<T>> processImage(std::shared_ptr<Image<T>> image, std::shared_ptr<Image<T>> variance, T threshold) const = 0;
58  };
59 
60  Frame(std::shared_ptr<Image<T>> detection_image,
61  std::shared_ptr<WeightImage> variance_map,
62  WeightImage::PixelType variance_threshold,
63  std::shared_ptr<CoordinateSystem> coordinate_system,
64  SeFloat gain, SeFloat saturation, int interpolation_gap);
65 
66  // FIXME: this simplified version is used in unit tests, get rid of it
67  explicit Frame(std::shared_ptr<Image<T>> detection_image,
68  std::shared_ptr<CoordinateSystem> coordinate_system = nullptr,
69  std::shared_ptr<WeightImage> variance_map = nullptr);
70 
71  //
72  // Methods to get the image in one form or another
73  //
74 
76 
77 
78  // Just the original image
80  return m_image;
81  }
82 
83  size_t getHduIndex() const {
84  return m_hdu_index;
85  }
86 
87  void setHduIndex(size_t hdu_index) {
88  m_hdu_index = hdu_index;
89  }
90 
91  // Metadata of the original image
93  return m_metadata;
94  };
95 
97  m_metadata = metadata;
98  };
99 
100  // Returns the image with bad pixels interpolated (if interpolation is active, otherwise returns original)
102 
103  // Get the image with the background subtracted
105 
106  // Get the image with a filter applied to the subtracted image
108 
109  // Get the filtered image with the detection threshold subtracted from it
111 
112  // Get the SNR image
114 
115  //
116  // Methods to get the image in one form or another
117  //
118 
120 
122 
124  return m_variance_map;
125  }
126 
127  //
128  // Methods to get frame metadata
129  //
130 
132  return m_coordinate_system;
133  }
134 
136  return m_variance_threshold;
137  }
138 
139  SeFloat getGain() const {
140  return m_gain;
141  }
142 
144  return m_saturation;
145  }
146 
148  return m_background_rms;
149  }
150 
152 
154  return m_label;
155  }
156 
157  //
158  // Setters
159  //
160 
161  void setVarianceMap(std::shared_ptr<WeightImage> variance_map);
162 
164 
166 
167  void setDetectionThreshold(T detection_threshold);
168 
169  void setBackgroundLevel(T background_level);
170 
171  void setBackgroundLevel(std::shared_ptr<Image<T>> background_level_map, T background_rms);
172 
174 
175  void setLabel(const std::string &label);
176 
177 private:
178 
179  void applyFilter();
180  void applyInterpolation();
181 
185 
187 
191 
194 
195  int m_interpolation_gap; // max interpolation gap, 0 == no interpolation
196 
202 
204  size_t m_hdu_index = 0;
206 };
207 
210 
211 }
212 
213 #endif /* _SEFRAMEWORK_FRAME_FRAME_H_ */
std::shared_ptr< Image< T > > getSnrImage() const
Definition: Frame.cpp:141
void setMetadata(const std::map< std::string, MetadataEntry > &metadata)
Definition: Frame.h:96
std::map< std::string, MetadataEntry > m_metadata
Definition: Frame.h:205
std::shared_ptr< Image< T > > getOriginalImage() const
Definition: Frame.h:79
std::shared_ptr< Image< T > > m_image
Definition: Frame.h:182
std::shared_ptr< Image< T > > getThresholdedImage() const
Definition: Frame.cpp:135
std::shared_ptr< WeightImage > getVarianceMap() const
Definition: Frame.cpp:147
void setHduIndex(size_t hdu_index)
Definition: Frame.h:87
std::shared_ptr< Image< T > > m_filtered_image
Definition: Frame.h:200
SeFloat m_saturation
Definition: Frame.h:189
std::shared_ptr< Image< T > > getBackgroundLevelMap() const
Definition: Frame.cpp:212
std::string getLabel() const
Definition: Frame.h:153
SeFloat32 SeFloat
Definition: Types.h:32
void applyInterpolation()
Definition: Frame.cpp:282
std::shared_ptr< Image< T > > m_interpolated_image
Definition: Frame.h:198
std::shared_ptr< WeightImage > getUnfilteredVarianceMap() const
Definition: Frame.cpp:153
std::shared_ptr< Image< T > > getDetectionThresholdMap() const
Definition: Frame.cpp:164
STL class.
std::shared_ptr< WeightImage > m_variance_map
Definition: Frame.h:183
std::shared_ptr< Image< WeightImage::PixelType > > m_interpolated_variance
Definition: Frame.h:199
STL class.
virtual std::shared_ptr< Image< T > > processImage(std::shared_ptr< Image< T >> image, std::shared_ptr< Image< T >> variance, T threshold) const =0
SeFloat getGain() const
Definition: Frame.h:139
std::string m_label
Definition: Frame.h:203
std::shared_ptr< WeightImage > getOriginalVarianceMap() const
Definition: Frame.h:123
std::shared_ptr< Image< T > > m_background_level_map
Definition: Frame.h:184
std::shared_ptr< Image< T > > getFilteredImage() const
Definition: Frame.cpp:129
std::shared_ptr< CoordinateSystem > getCoordinateSystem() const
Definition: Frame.h:131
size_t getHduIndex() const
Definition: Frame.h:83
std::shared_ptr< Image< T > > getSubtractedImage() const
Definition: Frame.cpp:123
void setVarianceThreshold(WeightImage::PixelType threshold)
Definition: Frame.cpp:190
void setLabel(const std::string &label)
Definition: Frame.cpp:256
std::shared_ptr< ImageFilter > m_filter
Definition: Frame.h:197
const std::map< std::string, MetadataEntry > & getMetadata() const
Definition: Frame.h:92
std::shared_ptr< Image< T > > m_filtered_variance_map
Definition: Frame.h:201
SeFloat m_background_rms
Definition: Frame.h:190
void setVarianceMap(std::shared_ptr< WeightImage > variance_map)
Definition: Frame.cpp:175
Frame(std::shared_ptr< Image< T >> detection_image, std::shared_ptr< WeightImage > variance_map, WeightImage::PixelType variance_threshold, std::shared_ptr< CoordinateSystem > coordinate_system, SeFloat gain, SeFloat saturation, int interpolation_gap)
Definition: Frame.cpp:31
std::shared_ptr< CoordinateSystem > m_coordinate_system
Definition: Frame.h:186
void setDetectionThreshold(T detection_threshold)
Definition: Frame.cpp:224
WeightImage::PixelType m_variance_threshold
Definition: Frame.h:193
Interface representing an image.
Definition: Image.h:43
size_t m_hdu_index
Definition: Frame.h:204
void setFilter(std::shared_ptr< ImageFilter > filter)
Definition: Frame.cpp:247
void setBackgroundLevel(T background_level)
Definition: Frame.cpp:230
std::shared_ptr< Image< T > > getInterpolatedImage() const
Definition: Frame.cpp:112
std::shared_ptr< Image< T > > getImage(FrameImageLayer layer) const
Definition: Frame.cpp:74
SeFloat getBackgroundMedianRms() const
Definition: Frame.h:147
SeFloat getSaturation() const
Definition: Frame.h:143
WeightImage::PixelType getVarianceThreshold() const
Definition: Frame.h:135