34 template <
typename PixelT>
40 _footprints(
std::vector<
std::shared_ptr<
lsst::
afw::detection::Footprint>>()) {
44 mi != detBadMaskPlanes.
end(); ++mi){
48 LOGL_DEBUG(
"TRACE3.ip.diffim.KernelCandidateDetection",
49 "Cannot update bad bit mask with %s", (*mi).c_str());
50 LOGL_DEBUG(
"TRACE4.ip.diffim.KernelCandidateDetection",
54 LOGL_DEBUG(
"TRACE2.ip.diffim.KernelCandidateDetection",
55 "Using bad bit mask %d", _badBitMask);
78 template <
typename PixelT>
85 int fpNpixMin = _ps->getAsInt(
"fpNpixMin");
86 int fpGrowPix = _ps->getAsInt(
"fpGrowPix");
88 bool detOnTemplate = _ps->getAsBool(
"detOnTemplate");
89 double detThreshold = _ps->getAsDouble(
"detThreshold");
90 std::string detThresholdType = _ps->getAsString(
"detThresholdType");
102 if (detOnTemplate ==
true) {
104 *(templateMaskedImage),
111 LOGL_DEBUG(
"TRACE2.ip.diffim.KernelCandidateDetection.apply",
112 "Found %d total footprints in template above %.3f %s",
113 footprintListInPtr->size(), detThreshold, detThresholdType.
c_str());
117 *(scienceMaskedImage),
123 LOGL_DEBUG(
"TRACE2.ip.diffim.KernelCandidateDetection.apply",
124 "Found %d total footprints in science image above %.3f %s",
125 footprintListInPtr->size(), detThreshold, detThresholdType.
c_str());
130 i != footprintListInPtr->end(); ++i) {
132 growCandidate((*i), fpGrowPix, templateMaskedImage, scienceMaskedImage);
135 if (_footprints.size() == 0) {
137 "Unable to find any footprints for Psf matching");
140 LOGL_DEBUG(
"TRACE1.ip.diffim.KernelCandidateDetection.apply",
141 "Found %d clean footprints above threshold %.3f",
142 _footprints.size(), detThreshold);
146 template <
typename PixelT>
153 int fpNpixMax = _ps->getAsInt(
"fpNpixMax");
169 if (fp->getArea() >
static_cast<std::size_t>(fpNpixMax)) {
170 LOGL_DEBUG(
"TRACE3.ip.diffim.KernelCandidateDetection.apply",
171 "Footprint has too many pix: %d (max =%d)",
172 fp->getArea(), fpNpixMax);
181 return growCandidate(fpCore, fpGrowPix, templateMaskedImage, scienceMaskedImage);
184 LOGL_DEBUG(
"TRACE5.ip.diffim.KernelCandidateDetection.apply",
185 "Original footprint in parent : %d,%d -> %d,%d -> %d,%d",
210 fp->getSpans()->dilated(fpGrowPix, afwGeom::Stencil::MANHATTAN)
216 LOGL_DEBUG(
"TRACE5.ip.diffim.KernelCandidateDetection.apply",
217 "Grown footprint in parent : %d,%d -> %d,%d -> %d,%d",
227 LOGL_DEBUG(
"TRACE3.ip.diffim.KernelCandidateDetection.apply",
228 "Footprint grown off image");
233 bool subimageHasFailed =
false;
240 if (fsb.
getBits() & _badBitMask) {
241 LOGL_DEBUG(
"TRACE3.ip.diffim.KernelCandidateDetection.apply",
242 "Footprint has masked pix (vals=%d) in image to convolve",
244 subimageHasFailed =
true;
248 if (fsb.
getBits() & _badBitMask) {
249 LOGL_DEBUG(
"TRACE3.ip.diffim.KernelCandidateDetection.apply",
250 "Footprint has masked pix (vals=%d) in image not to convolve",
252 subimageHasFailed =
true;
256 LOGL_DEBUG(
"TRACE3.ip.diffim.KernelCandidateDetection.apply",
257 "Exception caught extracting Footprint");
258 LOGL_DEBUG(
"TRACE4.ip.diffim.KernelCandidateDetection.apply",
260 subimageHasFailed =
true;
262 if (subimageHasFailed) {
266 _footprints.push_back(fpGrow);
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
Image Subtraction helper functions.
Detect candidates for kernels within 2 images.
LSST DM logging module built on log4cxx.
#define LOGL_DEBUG(logger, message...)
Log a debug-level message using a varargs/printf style interface.
A Threshold is used to pass a threshold value to detection algorithms.
Represent a 2-dimensional array of bitmask pixels.
A class to manipulate images, masks, and variance as a single object.
lsst::geom::Box2I getBBox(ImageOrigin const origin=PARENT) const
MaskPtr getMask() const
Return a (shared_ptr to) the MaskedImage's mask.
Class for storing generic metadata.
An integer coordinate rectangle.
int getMinY() const noexcept
int getMinX() const noexcept
int getMaxX() const noexcept
bool contains(Point2I const &point) const noexcept
Return true if the box contains the point.
int getMaxY() const noexcept
Class to accumulate Mask bits.
void apply(MaskT const &mask)
MaskT::Pixel getBits() const
Search through images for Footprints with no masked pixels.
bool growCandidate(std::shared_ptr< lsst::afw::detection::Footprint > fp, int fpGrowPix, MaskedImagePtr const &templateMaskedImage, MaskedImagePtr const &scienceMaskedImage)
KernelCandidateDetection(lsst::daf::base::PropertySet const &ps)
void apply(MaskedImagePtr const &templateMaskedImage, MaskedImagePtr const &scienceMaskedImage)
Runs Detection on a single image for significant peaks, and checks returned Footprints for Masked pix...
Provides consistent interface for LSST exceptions.
virtual char const * what(void) const noexcept
Return a character string summarizing this exception.
Threshold createThreshold(const double value, const std::string type="value", const bool polarity=true)
Factory method for creating Threshold objects.