40 namespace SourceXtractor {
44 const SeFloat KRON_NRADIUS = 3*2.0;
45 const SeFloat CROWD_THRESHOLD_KRON = 0.1;
46 const SeFloat BADAREA_THRESHOLD_KRON = 0.1;
60 const auto detection_variance = detection_frame_images.getLockedImage(
LayerVarianceMap);
74 auto ell_aper = std::make_shared<EllipticalAperture>(cxx, cyy, cxy, KRON_NRADIUS);
77 const auto& min_pixel = ell_aper->getMinPixel(centroid_x, centroid_y);
78 const auto& max_pixel = ell_aper->getMaxPixel(centroid_x, centroid_y);
84 NeighbourInfo neighbour_info(min_pixel, max_pixel, pix_list, threshold_image);
94 for (
int pixel_y = min_pixel.m_y; pixel_y <= max_pixel.m_y; pixel_y++) {
95 for (
int pixel_x = min_pixel.m_x; pixel_x <= max_pixel.m_x; pixel_x++) {
98 SeFloat area = ell_aper->getArea(centroid_x, centroid_y, pixel_x, pixel_y);
104 if (detection_image->isInside(pixel_x, pixel_y)) {
111 auto pixel_variance = detection_variance->getValue(pixel_x, pixel_y);
114 bool is_good = pixel_variance < variance_threshold;
115 value = detection_image->getValue(pixel_x, pixel_y) * is_good;
116 area_bad += !is_good;
124 radius_flux_sum += value *
sqrt(ell_aper->getRadiusSquared(centroid_x, centroid_y, pixel_x, pixel_y));
136 bool bad_threshold = area_sum > 0 && area_bad / area_sum > BADAREA_THRESHOLD_KRON;
137 flag |= 0x0001 * bad_threshold;
140 bool crowded = area_sum > 0 && area_full / area_sum > CROWD_THRESHOLD_KRON;