28 namespace SourceXtractor {
37 m_image(detection_image),
38 m_variance_map(variance_map),
39 m_coordinate_system(coordinate_system),
41 m_saturation(saturation),
43 m_detection_threshold(0),
44 m_variance_threshold(variance_threshold),
45 m_interpolation_gap(interpolation_gap) {
56 m_image(detection_image),
57 m_variance_map(variance_map),
58 m_coordinate_system(coordinate_system),
62 m_detection_threshold(0),
63 m_variance_threshold(1e6),
64 m_interpolation_gap(0) {
65 if (variance_map ==
nullptr && detection_image !=
nullptr) {
67 detection_image->getHeight(), .0001);
79 return getOriginalImage();
82 return getInterpolatedImage();
85 return getSubtractedImage();
88 return getFilteredImage();
91 return getThresholdedImage();
97 return getOriginalVarianceMap();
100 return getUnfilteredVarianceMap();
103 return getVarianceMap();
106 return getDetectionThresholdMap();
113 if (m_interpolated_image > 0) {
114 return m_interpolated_image;
130 return m_filtered_image;
148 return m_filtered_variance_map;
154 if (m_interpolated_variance) {
155 return m_interpolated_variance;
158 return m_variance_map;
165 struct ThresholdOperation {
166 static T process(
const T& a,
const T& b) {
return sqrt(a) * b; }
170 return ThresholdImage::create(m_variance_map, m_detection_threshold);
176 m_variance_map = variance_map;
179 m_interpolated_image =
nullptr;
180 m_interpolated_variance =
nullptr;
181 m_filtered_image =
nullptr;
182 m_filtered_variance_map =
nullptr;
184 applyInterpolation();
191 m_variance_threshold = threshold;
194 m_interpolated_image =
nullptr;
195 m_interpolated_variance =
nullptr;
196 m_filtered_image =
nullptr;
197 m_filtered_variance_map =
nullptr;
199 applyInterpolation();
206 if (m_background_level_map !=
nullptr) {
207 return m_background_level_map;
218 m_detection_threshold = detection_threshold;
230 m_background_level_map = background_level_map;
231 m_background_rms = background_rms;
232 m_filtered_image =
nullptr;
233 m_filtered_variance_map =
nullptr;
242 m_filtered_image =
nullptr;
243 m_filtered_variance_map =
nullptr;
256 if (m_filter !=
nullptr) {
257 m_filtered_image = m_filter->processImage(getSubtractedImage(), getUnfilteredVarianceMap(),
258 m_variance_threshold);
259 auto filtered_variance_map = m_filter->processImage(getUnfilteredVarianceMap(),
260 getUnfilteredVarianceMap(),
261 m_variance_threshold);
269 m_filtered_image = getSubtractedImage();
270 m_filtered_variance_map = getUnfilteredVarianceMap();
276 if (!m_interpolated_variance) {
279 m_variance_map, m_variance_map, m_variance_threshold, m_interpolation_gap)
282 if (!m_interpolated_image) {
285 m_image, m_variance_map, m_variance_threshold, m_interpolation_gap)