23#include "ndarray/eigen.h"
31FlagDefinitionList flagDefinitions;
36 flagDefinitions.add(
"flag_noCounts",
"Object to be centroided has no counts");
38 flagDefinitions.add(
"flag_edge",
"Object too close to edge");
45 _centroidKey(
CentroidResultKey::addFields(schema, name,
"centroid from Naive Centroid algorithm",
47 _flagHandler(
FlagHandler::addFields(schema, name, getFlagDefinitions())),
48 _centroidExtractor(schema, name,
true),
49 _centroidChecker(schema, name,
ctrl.doFootprintCheck,
ctrl.maxDistToPeak) {}
60 ImageT const& image = *exposure.getMaskedImage().getImage();
62 int x = center.getX();
63 int y = center.getY();
74 ImageT::xy_locator
im = image.xy_at(
x,
y);
76 double const sum = (
im(-1, 1) +
im(0, 1) +
im(1, 1) +
im(-1, 0) +
im(0, 0) +
im(1, 0) +
im(-1, -1) +
77 im(0, -1) +
im(1, -1)) -
86 double const sum_x = -
im(-1, 1) +
im(1, 1) + -
im(-1, 0) +
im(1, 0) + -
im(-1, -1) +
im(1, -1);
87 double const sum_y = (
im(-1, 1) +
im(0, 1) +
im(1, 1)) - (
im(-1, -1) +
im(0, -1) +
im(1, -1));
105 if (
mapper.getInputSchema().getNames().count(
mapper.getInputSchema().join(name, flag.
name)) == 0)
108 mapper.getInputSchema().find<afw::table::Flag>(name +
"_" + flag.
name).key;
A FunctorKey for CentroidResult.
vector-type utility class to build a collection of FlagDefinitions
Utility class for handling flag fields that indicate the failure modes of an algorithm.
void handleFailure(afw::table::BaseRecord &record, MeasurementError const *error=nullptr) const
Handle an expected or unexpected Exception thrown by a measurement algorithm.
void setValue(afw::table::BaseRecord &record, std::size_t i, bool value) const
Set the flag field corresponding to the given flag index.
Exception to be thrown when a measurement algorithm experiences a known failure mode.
static FlagDefinition const NO_COUNTS
virtual void fail(afw::table::SourceRecord &measRecord, MeasurementError *error=nullptr) const
Handle an exception thrown by the current algorithm by setting flags in the given record.
virtual void measure(afw::table::SourceRecord &measRecord, afw::image::Exposure< float > const &exposure) const
Called to measure a single child source in an image.
static FlagDefinition const FAILURE
NaiveCentroidAlgorithm(Control const &ctrl, std::string const &name, afw::table::Schema &schema)
static FlagDefinition const EDGE
static FlagDefinitionList const & getFlagDefinitions()
A C++ control class to handle NaiveCentroidAlgorithm's configuration.
double background
"Value to subtract from the image pixel values" ;
double indexToPosition(double ind)
@ NO_UNCERTAINTY
Algorithm provides no uncertainy information at all.
A reusable struct for centroid measurements.
CentroidElement x
x (column) coordinate of the measured position
Simple class used to define and document flags The name and doc constitute the identity of the FlagDe...