37 centroid_x -= min_pixel.
m_x;
38 centroid_y -= min_pixel.
m_y;
39 auto mirror_x = 2 * centroid_x - pixel_x + 0.49999;
40 auto mirror_y = 2 * centroid_y - pixel_y + 0.49999;
41 if (img.
isInside(mirror_x, mirror_y)) {
42 auto variance_tmp = variance_map.
getValue(mirror_x, mirror_y);
43 if (variance_tmp < variance_threshold) {
57 auto min_pixel = aperture->getMinPixel(centroid_x, centroid_y);
58 auto max_pixel = aperture->getMaxPixel(centroid_x, centroid_y);
61 if (max_pixel.m_x < 0 || max_pixel.m_y < 0 || min_pixel.m_x >= img->getWidth() ||
62 min_pixel.m_y >= img->getHeight()) {
68 if (min_pixel.clip(img->getWidth(), img->getHeight()))
70 if (max_pixel.clip(img->getWidth(), img->getHeight()))
74 auto img_cutout = img->getChunk(min_pixel, max_pixel);
75 auto var_cutout = variance_map->getChunk(min_pixel, max_pixel);
78 for (
int pixel_y = 0; pixel_y < img_cutout->getHeight(); pixel_y++) {
79 for (
int pixel_x = 0; pixel_x < img_cutout->getWidth(); pixel_x++) {
84 auto area = aperture->getArea(centroid_x, centroid_y, min_pixel.m_x + pixel_x,
85 min_pixel.m_y + pixel_y);
92 SeFloat variance_tmp = var_cutout->getValue(pixel_x, pixel_y);
93 if (variance_tmp > variance_threshold) {
97 centroid_x, centroid_y, min_pixel, pixel_x, pixel_y, *img_cutout, *var_cutout,
103 pixel_value = img_cutout->getValue(pixel_x, pixel_y);
104 pixel_variance = variance_tmp;
107 measurement.
m_flux += pixel_value * area;
108 measurement.
m_variance += pixel_variance * area;