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();
194 m_variance_threshold = threshold;
201 m_interpolated_image =
nullptr;
202 m_interpolated_variance =
nullptr;
203 m_filtered_image =
nullptr;
204 m_filtered_variance_map =
nullptr;
206 applyInterpolation();
213 if (m_background_level_map !=
nullptr) {
214 return m_background_level_map;
225 m_detection_threshold = detection_threshold;
237 m_background_level_map = background_level_map;
238 m_background_rms = background_rms;
239 m_filtered_image =
nullptr;
240 m_filtered_variance_map =
nullptr;
249 m_filtered_image =
nullptr;
250 m_filtered_variance_map =
nullptr;
263 if (m_filter !=
nullptr) {
264 m_filtered_image = m_filter->processImage(getSubtractedImage(), getUnfilteredVarianceMap(),
265 m_variance_threshold);
266 auto filtered_variance_map = m_filter->processImage(getUnfilteredVarianceMap(),
267 getUnfilteredVarianceMap(),
268 m_variance_threshold);
276 m_filtered_image = getSubtractedImage();
277 m_filtered_variance_map = getUnfilteredVarianceMap();
283 if (!m_interpolated_variance) {
286 m_variance_map, m_variance_map, m_variance_threshold, m_interpolation_gap)
289 if (!m_interpolated_image) {
292 m_image, m_variance_map, m_variance_threshold, m_interpolation_gap)