SourceXtractorPlusPlus  0.10
Please provide a description of the project.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
CheckImages.cpp
Go to the documentation of this file.
1 
17 /*
18  * CheckImages.cpp
19  *
20  * Created on: May 30, 2017
21  * Author: mschefer
22  */
23 
28 
30 
31 namespace SourceXtractor {
32 
34 
36 }
37 
40 }
41 
43  if (m_custom_images.count(id) != 0) {
45  if (image != nullptr) {
46  return image;
47  }
48  }
49 
50 
51  auto image = FitsWriter::newImage<SeFloat>(id + ".fits",
52  width, height);
53  m_custom_images[id] = std::make_tuple(image, false);
54 
55  return image;
56 }
57 
59  m_custom_images[id] = std::make_tuple(image, true);
60 }
61 
63  m_detection_image = manager.getConfiguration<DetectionImageConfig>().getDetectionImage();
64  auto& config = manager.getConfiguration<CheckImagesConfig>();
65 
66  m_model_fitting_image_filename = config.getModelFittingImageFilename();
67  m_residual_filename = config.getModelFittingResidualFilename();
68  m_model_background_filename = config.getModelBackgroundFilename();
69  m_model_variance_filename = config.getModelVarianceFilename();
70  m_segmentation_filename = config.getSegmentationFilename();
71  m_partition_filename = config.getPartitionFilename();
72  m_group_filename = config.getGroupFilename();
73  m_filtered_filename = config.getFilteredFilename();
74  m_thresholded_filename = config.getThresholdedFilename();
75  m_snr_filename = config.getSnrFilename();
76  m_auto_aperture_filename = config.getAutoApertureFilename();
77  m_aperture_filename = config.getApertureFilename();
78  m_moffat_filename = config.getMoffatFilename();
79  m_psf_filename = config.getPsfFilename();
80 
81  m_coordinate_system = manager.getConfiguration<DetectionImageConfig>().getCoordinateSystem();
82 
83  if (m_segmentation_filename != "") {
84  m_segmentation_image = FitsWriter::newImage<unsigned int>(m_segmentation_filename.native(),
85  m_detection_image->getWidth(), m_detection_image->getHeight(), m_coordinate_system);
86  }
87 
88  if (m_partition_filename != "") {
89  m_partition_image = FitsWriter::newImage<unsigned int>(m_partition_filename.native(),
90  m_detection_image->getWidth(), m_detection_image->getHeight(), m_coordinate_system);
91  }
92 
93  if (m_group_filename != "") {
94  m_group_image = FitsWriter::newImage<unsigned int>(m_group_filename.native(),
95  m_detection_image->getWidth(), m_detection_image->getHeight(), m_coordinate_system);
96  }
97 
98  if (m_auto_aperture_filename != "") {
99  m_auto_aperture_image = FitsWriter::newImage<unsigned int>(m_auto_aperture_filename.native(),
100  m_detection_image->getWidth(), m_detection_image->getHeight(), m_coordinate_system);
101  }
102 
103  if (m_aperture_filename != "") {
104  m_aperture_image = FitsWriter::newImage<unsigned int>(m_aperture_filename.native(),
105  m_detection_image->getWidth(), m_detection_image->getHeight(), m_coordinate_system
106  );
107  }
108 
109  if (m_moffat_filename != "") {
110  m_moffat_image = FitsWriter::newImage<SeFloat>(m_moffat_filename.native(),
111  m_detection_image->getWidth(), m_detection_image->getHeight(), m_coordinate_system
112  );
113  }
114 }
115 
118  if (m_auto_aperture_filename.empty()) {
119  return nullptr;
120  }
121 
123 
124  auto i = m_measurement_auto_aperture_images.find(frame);
125  if (i == m_measurement_auto_aperture_images.end()) {
126  auto filename = m_auto_aperture_filename.stem();
127  filename += "_" + frame->getLabel();
128  filename.replace_extension(m_auto_aperture_filename.extension());
129  auto frame_filename = m_auto_aperture_filename.parent_path() / filename;
132  frame,
133  FitsWriter::newImage<unsigned int>(
134  frame_filename.native(),
135  frame->getOriginalImage()->getWidth(),
136  frame->getOriginalImage()->getHeight(),
137  frame->getCoordinateSystem()
138  ))).first;
139  }
140  return i->second;
141 }
142 
145  if (m_aperture_filename.empty()) {
146  return nullptr;
147  }
148 
150 
151  auto i = m_measurement_aperture_images.find(frame);
152  if (i == m_measurement_aperture_images.end()) {
153  auto filename = m_aperture_filename.stem();
154  filename += "_" + frame->getLabel();
155  filename.replace_extension(m_aperture_filename.extension());
156  auto frame_filename = m_aperture_filename.parent_path() / filename;
157  i = m_measurement_aperture_images.emplace(
159  frame,
160  FitsWriter::newImage<unsigned int>(
161  frame_filename.native(),
162  frame->getOriginalImage()->getWidth(),
163  frame->getOriginalImage()->getHeight(),
164  frame->getCoordinateSystem()
165  ))).first;
166  }
167  return i->second;
168 }
169 
172  if (m_model_fitting_image_filename.empty() && m_residual_filename.empty()) {
173  return nullptr;
174  }
175 
177 
178  auto i = m_check_image_model_fitting.find(frame);
179  if (i == m_check_image_model_fitting.end()) {
181 
182  if (m_model_fitting_image_filename.empty()) {
183  writeable_image = FitsWriter::newTemporaryImage<DetectionImage::PixelType>(
184  "sourcextractor_check_model_%%%%%%.fits",
185  frame->getOriginalImage()->getWidth(), frame->getOriginalImage()->getHeight()
186  );
187  } else {
189  filename += "_" + frame->getLabel();
190  filename.replace_extension(m_model_fitting_image_filename.extension());
191  auto frame_filename = m_model_fitting_image_filename.parent_path() / filename;
192  writeable_image = FitsWriter::newImage<MeasurementImage::PixelType>(
193  frame_filename.native(),
194  frame->getOriginalImage()->getWidth(),
195  frame->getOriginalImage()->getHeight(),
196  frame->getCoordinateSystem()
197  );
198  }
199  i = m_check_image_model_fitting.emplace(std::make_pair(frame, writeable_image)).first;
200  }
201  return i->second;
202 }
203 
206  if (m_psf_filename.empty()) {
207  return nullptr;
208  }
209 
211 
212  auto i = m_check_image_psf.find(frame);
213  if (i == m_check_image_psf.end()) {
214  auto filename = m_psf_filename.stem();
215  filename += "_" + frame->getLabel();
216  filename.replace_extension(m_psf_filename.extension());
217  auto frame_filename = m_psf_filename.parent_path() / filename;
218  i = m_check_image_psf.emplace(
220  frame,
221  FitsWriter::newImage<MeasurementImage::PixelType>(
222  frame_filename.native(),
223  frame->getOriginalImage()->getWidth(),
224  frame->getOriginalImage()->getHeight(),
225  frame->getCoordinateSystem()
226  ))).first;
227  }
228  return i->second;
229 }
230 
233 
234  // if possible, save the background image
235  if (m_background_image != nullptr && m_model_background_filename != "") {
237  }
238 
239  // if possible, save the variance image
240  if (m_variance_image != nullptr && m_model_variance_filename != "") {
242  }
243 
244  // if possible, save the filtered image
245  if (m_filtered_image != nullptr && m_filtered_filename != "") {
247  }
248 
249  // if possible, save the thresholded image
250  if (m_thresholded_image != nullptr && m_thresholded_filename != "") {
252  }
253 
254  // if possible, save the SNR image
255  if (m_snr_image != nullptr && m_snr_filename != "") {
257  }
258 
259  // if possible, create and save the residual image
260  if (m_residual_filename != "") {
261  for (auto &ci : m_check_image_model_fitting) {
262  auto residual_image = SubtractImage<SeFloat>::create(ci.first->getSubtractedImage(), ci.second);
263  auto filename = m_residual_filename.stem();
264  filename += "_" + ci.first->getLabel();
265  filename.replace_extension(m_residual_filename.extension());
266  auto frame_filename = m_residual_filename.parent_path() / filename;
267  FitsWriter::writeFile(*residual_image, frame_filename.native(), ci.first->getCoordinateSystem());
268  }
269  }
270 
271  for (auto const& entry : m_custom_images) {
272  if (std::get<1>(entry.second)) {
273  auto filename = entry.first;
274  if (!filename.has_extension())
275  filename.replace_extension(".fits");
276  FitsWriter::writeFile(*std::get<0>(entry.second), filename.native());
277  }
278  }
279 }
280 
281 }
std::shared_ptr< WriteableImage< unsigned int > > getAutoApertureImage() const
Definition: CheckImages.h:64
boost::filesystem::path m_partition_filename
Definition: CheckImages.h:153
boost::filesystem::path m_model_background_filename
Definition: CheckImages.h:150
std::shared_ptr< CoordinateSystem > m_coordinate_system
Definition: CheckImages.h:146
boost::filesystem::path m_filtered_filename
Definition: CheckImages.h:155
std::shared_ptr< WriteableImage< unsigned int > > m_partition_image
Definition: CheckImages.h:131
boost::filesystem::path m_thresholded_filename
Definition: CheckImages.h:156
void setCustomCheckImage(std::string id, std::shared_ptr< Image< SeFloat >> image)
Definition: CheckImages.cpp:58
std::map< std::shared_ptr< const MeasurementImageFrame >, decltype(m_auto_aperture_image)> m_measurement_auto_aperture_images
Definition: CheckImages.h:137
std::map< boost::filesystem::path, std::tuple< std::shared_ptr< Image< SeFloat > >, bool > > m_custom_images
Definition: CheckImages.h:163
boost::filesystem::path m_model_variance_filename
Definition: CheckImages.h:151
boost::filesystem::path m_aperture_filename
Definition: CheckImages.h:159
std::shared_ptr< WriteableImage< unsigned int > > m_aperture_image
Definition: CheckImages.h:134
T make_tuple(T...args)
boost::filesystem::path m_snr_filename
Definition: CheckImages.h:157
static std::unique_ptr< CheckImages > m_instance
Definition: CheckImages.h:127
Provides the detection image.
STL class.
std::shared_ptr< Image< SeFloat > > m_filtered_image
Definition: CheckImages.h:142
std::map< std::shared_ptr< const MeasurementImageFrame >, decltype(m_aperture_image)> m_measurement_aperture_images
Definition: CheckImages.h:136
boost::filesystem::path m_auto_aperture_filename
Definition: CheckImages.h:158
boost::filesystem::path m_group_filename
Definition: CheckImages.h:154
std::shared_ptr< WriteableImage< MeasurementImage::PixelType > > getModelFittingImage(std::shared_ptr< const MeasurementImageFrame > frame)
boost::filesystem::path m_psf_filename
Definition: CheckImages.h:161
string filename
Definition: conf.py:63
std::shared_ptr< WriteableImage< unsigned int > > m_segmentation_image
Definition: CheckImages.h:130
T lock(T...args)
T make_pair(T...args)
virtual void configure(Euclid::Configuration::ConfigManager &manager) override
Method which should initialize the object.
Definition: CheckImages.cpp:62
std::shared_ptr< WriteableImage< unsigned int > > getApertureImage() const
Definition: CheckImages.h:68
T dynamic_pointer_cast(T...args)
virtual void reportConfigDependencies(Euclid::Configuration::ConfigManager &manager) const override
Registers all the Configuration dependencies.
Definition: CheckImages.cpp:38
std::map< std::shared_ptr< const MeasurementImageFrame >, std::shared_ptr< WriteableImage< MeasurementImage::PixelType > > > m_check_image_model_fitting
Definition: CheckImages.h:138
std::shared_ptr< WriteableImage< SeFloat > > m_moffat_image
Definition: CheckImages.h:135
std::shared_ptr< WriteableImage< MeasurementImage::PixelType > > getPsfImage(std::shared_ptr< const MeasurementImageFrame > frame)
std::shared_ptr< Image< SeFloat > > m_snr_image
Definition: CheckImages.h:144
STL class.
std::shared_ptr< WriteableImage< unsigned int > > m_auto_aperture_image
Definition: CheckImages.h:133
std::map< std::shared_ptr< const MeasurementImageFrame >, std::shared_ptr< WriteableImage< MeasurementImage::PixelType > > > m_check_image_psf
Definition: CheckImages.h:138
std::shared_ptr< Image< SeFloat > > m_background_image
Definition: CheckImages.h:141
Interface representing an image.
Definition: Image.h:43
std::shared_ptr< Image< SeFloat > > m_thresholded_image
Definition: CheckImages.h:143
static void writeFile(const Image< T > &image, const std::string &filename, const std::shared_ptr< CoordinateSystem > coord_system=nullptr)
Definition: FitsWriter.h:53
std::shared_ptr< DetectionImage > m_detection_image
Definition: CheckImages.h:140
std::shared_ptr< WriteableImage< unsigned int > > m_group_image
Definition: CheckImages.h:132
std::shared_ptr< WriteableImage< SeFloat > > getWriteableCheckImage(std::string id, int width, int height)
Definition: CheckImages.cpp:42
boost::filesystem::path m_moffat_filename
Definition: CheckImages.h:160
boost::filesystem::path m_residual_filename
Definition: CheckImages.h:149
boost::filesystem::path m_model_fitting_image_filename
Definition: CheckImages.h:148
std::shared_ptr< WeightImage > m_variance_image
Definition: CheckImages.h:145
static std::shared_ptr< ProcessedImage< T, P > > create(std::shared_ptr< const Image< T >> image_a, std::shared_ptr< const Image< T >> image_b)
boost::filesystem::path m_segmentation_filename
Definition: CheckImages.h:152