LSST Applications g0265f82a02+c6dfa2ddaf,g1162b98a3f+b2075782a9,g2079a07aa2+1b2e822518,g2bbee38e9b+c6dfa2ddaf,g337abbeb29+c6dfa2ddaf,g3ddfee87b4+a60788ef87,g50ff169b8f+2eb0e556e8,g52b1c1532d+90ebb246c7,g555ede804d+a60788ef87,g591dd9f2cf+ba8caea58f,g5ec818987f+864ee9cddb,g858d7b2824+9ee1ab4172,g876c692160+a40945ebb7,g8a8a8dda67+90ebb246c7,g8cdfe0ae6a+4fd9e222a8,g99cad8db69+5e309b7bc6,g9ddcbc5298+a1346535a5,ga1e77700b3+df8f93165b,ga8c6da7877+aa12a14d27,gae46bcf261+c6dfa2ddaf,gb0e22166c9+8634eb87fb,gb3f2274832+d0da15e3be,gba4ed39666+1ac82b564f,gbb8dafda3b+5dfd9c994b,gbeb006f7da+97157f9740,gc28159a63d+c6dfa2ddaf,gc86a011abf+9ee1ab4172,gcf0d15dbbd+a60788ef87,gdaeeff99f8+1cafcb7cd4,gdc0c513512+9ee1ab4172,ge79ae78c31+c6dfa2ddaf,geb67518f79+ba1859f325,geb961e4c1e+f9439d1e6f,gee10cc3b42+90ebb246c7,gf1cff7945b+9ee1ab4172,w.2024.12
LSST Data Management Base Package
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Attributes | List of all members
lsst::meas::base::NaiveCentroidAlgorithm Class Reference

A class that calculates a centroid as a simple unweighted first moment of the 3x3 region around a pixel. More...

#include <NaiveCentroid.h>

Inheritance diagram for lsst::meas::base::NaiveCentroidAlgorithm:
lsst::meas::base::SimpleAlgorithm lsst::meas::base::SingleFrameAlgorithm lsst::meas::base::ForcedAlgorithm lsst::meas::base::BaseAlgorithm lsst::meas::base::BaseAlgorithm

Public Types

typedef NaiveCentroidControl Control
 

Public Member Functions

 NaiveCentroidAlgorithm (Control const &ctrl, std::string const &name, afw::table::Schema &schema)
 
virtual void measure (afw::table::SourceRecord &measRecord, afw::image::Exposure< float > const &exposure) const
 Called to measure a single child source in an image.
 
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.
 
void measureForced (afw::table::SourceRecord &measRecord, afw::image::Exposure< float > const &exposure, afw::table::SourceRecord const &refRecord, afw::geom::SkyWcs const &refWcs) const override
 Called to measure a single child source in an image.
 
void measureNForced (afw::table::SourceCatalog const &measCat, afw::image::Exposure< float > const &exposure, afw::table::SourceCatalog const &refRecord, afw::geom::SkyWcs const &refWcs) const override
 Called to simultaneously measure all children in a deblend family, in a single image.
 
virtual void measureN (afw::table::SourceCatalog const &measCat, afw::image::Exposure< float > const &exposure) const
 Called to simultaneously measure all children in a deblend family, in a single image.
 
std::string getLogName () const
 

Static Public Member Functions

static FlagDefinitionList const & getFlagDefinitions ()
 

Static Public Attributes

static FlagDefinition const FAILURE = flagDefinitions.addFailureFlag()
 
static FlagDefinition const NO_COUNTS
 
static FlagDefinition const EDGE
 

Protected Attributes

std::string _logName
 

Detailed Description

A class that calculates a centroid as a simple unweighted first moment of the 3x3 region around a pixel.

A fixed background (set via config) may optionally be subtracted. This algorithm does not currently report an error, but it probably should.

Definition at line 69 of file NaiveCentroid.h.

Member Typedef Documentation

◆ Control

Definition at line 77 of file NaiveCentroid.h.

Constructor & Destructor Documentation

◆ NaiveCentroidAlgorithm()

lsst::meas::base::NaiveCentroidAlgorithm::NaiveCentroidAlgorithm ( Control const & ctrl,
std::string const & name,
afw::table::Schema & schema )

Definition at line 42 of file NaiveCentroid.cc.

44 : _ctrl(ctrl),
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) {}
static CentroidResultKey addFields(afw::table::Schema &schema, std::string const &name, std::string const &doc, UncertaintyEnum uncertainty)
Add the appropriate fields to a Schema, and return a CentroidResultKey that manages them.
static FlagHandler addFields(afw::table::Schema &schema, std::string const &prefix, FlagDefinitionList const &flagDefs, FlagDefinitionList const &exclDefs=FlagDefinitionList::getEmptyList())
Add Flag fields to a schema, creating a FlagHandler object to manage them.
static FlagDefinitionList const & getFlagDefinitions()
@ NO_UNCERTAINTY
Algorithm provides no uncertainy information at all.
Definition constants.h:44

Member Function Documentation

◆ fail()

void lsst::meas::base::NaiveCentroidAlgorithm::fail ( afw::table::SourceRecord & measRecord,
MeasurementError * error = nullptr ) const
virtual

Handle an exception thrown by the current algorithm by setting flags in the given record.

fail() is called by the measurement framework when an exception is allowed to propagate out of one the algorithm's measure() methods. It should generally set both a general failure flag for the algorithm as well as a specific flag indicating the error condition, if possible. To aid in this, if the exception was an instance of MeasurementError, it will be passed in, carrying information about what flag to set.

An algorithm can also to chose to set flags within its own measure() methods, and then just return, rather than throw an exception. However, fail() should be implemented even when all known failure modes do not throw exceptions, to ensure that unexpected exceptions thrown in lower-level code are properly handled.

Implements lsst::meas::base::BaseAlgorithm.

Definition at line 95 of file NaiveCentroid.cc.

95 {
96 _flagHandler.handleFailure(measRecord, error);
97}
void handleFailure(afw::table::BaseRecord &record, MeasurementError const *error=nullptr) const
Handle an expected or unexpected Exception thrown by a measurement algorithm.

◆ getFlagDefinitions()

FlagDefinitionList const & lsst::meas::base::NaiveCentroidAlgorithm::getFlagDefinitions ( )
static

Definition at line 40 of file NaiveCentroid.cc.

40{ return flagDefinitions; }

◆ getLogName()

std::string lsst::meas::base::BaseAlgorithm::getLogName ( ) const
inlineinherited

Definition at line 66 of file Algorithm.h.

66{ return _logName; }

◆ measure()

void lsst::meas::base::NaiveCentroidAlgorithm::measure ( afw::table::SourceRecord & measRecord,
afw::image::Exposure< float > const & exposure ) const
virtual

Called to measure a single child source in an image.

Before this method is called, all neighbors will be replaced with noise, using the outputs of the deblender. Outputs should be saved in the given SourceRecord, which can also be used to obtain centroid (see SafeCentroidExtractor) and shape (see SafeShapeExtractor) information.

Implements lsst::meas::base::SingleFrameAlgorithm.

Definition at line 51 of file NaiveCentroid.cc.

52 {
53 geom::Point2D center = _centroidExtractor(measRecord, _flagHandler);
54 CentroidResult result;
55 result.x = center.getX();
56 result.y = center.getY();
57 measRecord.set(_centroidKey, result); // better than NaN
58
59 typedef afw::image::Image<float> ImageT;
60 ImageT const& image = *exposure.getMaskedImage().getImage();
61
62 int x = center.getX(); // FIXME: this is different from GaussianCentroid and SdssCentroid here,
63 int y = center.getY(); // and probably shouldn't be.
64
65 x -= image.getX0(); // work in image Pixel coordinates
66 y -= image.getY0();
67
68 if (x < 1 || x >= image.getWidth() - 1 || y < 1 || y >= image.getHeight() - 1) {
69 _flagHandler.setValue(measRecord, EDGE.number, true);
70 _flagHandler.setValue(measRecord, NaiveCentroidAlgorithm::FAILURE.number, true);
71 return;
72 }
73
74 ImageT::xy_locator im = image.xy_at(x, y);
75
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)) -
78 9 * _ctrl.background;
79
80 if (sum == 0.0) {
81 _flagHandler.setValue(measRecord, NO_COUNTS.number, true);
82 _flagHandler.setValue(measRecord, NaiveCentroidAlgorithm::FAILURE.number, true);
83 return;
84 }
85
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));
88
89 result.x = afw::image::indexToPosition(x + image.getX0()) + sum_x / sum;
90 result.y = afw::image::indexToPosition(y + image.getY0()) + sum_y / sum;
91 measRecord.set(_centroidKey, result);
92 _centroidChecker(measRecord);
93}
int y
Definition SpanSet.cc:48
void setValue(afw::table::BaseRecord &record, std::size_t i, bool value) const
Set the flag field corresponding to the given flag index.
static FlagDefinition const NO_COUNTS
static FlagDefinition const FAILURE
static FlagDefinition const EDGE
double background
"Value to subtract from the image pixel values" ;
double indexToPosition(double ind)
Convert image index to image position.
Definition ImageUtils.h:55

◆ measureForced()

void lsst::meas::base::SimpleAlgorithm::measureForced ( afw::table::SourceRecord & measRecord,
afw::image::Exposure< float > const & exposure,
afw::table::SourceRecord const & refRecord,
afw::geom::SkyWcs const & refWcs ) const
inlineoverridevirtualinherited

Called to measure a single child source in an image.

Before this method is called, all neighbors will be replaced with noise, using the outputs of the deblender. Outputs should be saved in the given SourceRecord, which can also be used to obtain centroid (see SafeCentroidExtractor) and shape (see SafeShapeExtractor) information.

Implements lsst::meas::base::ForcedAlgorithm.

Reimplemented in lsst::meas::extensions::photometryKron::KronFluxAlgorithm.

Definition at line 172 of file Algorithm.h.

175 {
176 measure(measRecord, exposure);
177 }
virtual void measure(afw::table::SourceRecord &measRecord, afw::image::Exposure< float > const &exposure) const =0
Called to measure a single child source in an image.

◆ measureN()

void lsst::meas::base::SingleFrameAlgorithm::measureN ( afw::table::SourceCatalog const & measCat,
afw::image::Exposure< float > const & exposure ) const
virtualinherited

Called to simultaneously measure all children in a deblend family, in a single image.

Outputs should be saved in the given SourceCatalog, which can also be used to obtain centroid (see SafeCentroidExtractor) and shape (see SafeShapeExtractor) information.

The default implementation simply throws an exception, indicating that simultaneous measurement is not supported.

Definition at line 31 of file Algorithm.cc.

32 {
33 throw LSST_EXCEPT(pex::exceptions::LogicError, "measureN not implemented for this algorithm");
34}
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
Definition Exception.h:48

◆ measureNForced()

void lsst::meas::base::SimpleAlgorithm::measureNForced ( afw::table::SourceCatalog const & measCat,
afw::image::Exposure< float > const & exposure,
afw::table::SourceCatalog const & refRecord,
afw::geom::SkyWcs const & refWcs ) const
inlineoverridevirtualinherited

Called to simultaneously measure all children in a deblend family, in a single image.

Outputs should be saved in the given SourceCatalog, which can also be used to obtain centroid (see SafeCentroidExtractor) and shape (see SafeShapeExtractor) information.

The default implementation simply throws an exception, indicating that simultaneous measurement is not supported.

Reimplemented from lsst::meas::base::ForcedAlgorithm.

Definition at line 179 of file Algorithm.h.

182 {
183 measureN(measCat, exposure);
184 }
virtual void measureN(afw::table::SourceCatalog const &measCat, afw::image::Exposure< float > const &exposure) const
Called to simultaneously measure all children in a deblend family, in a single image.
Definition Algorithm.cc:31

Member Data Documentation

◆ _logName

std::string lsst::meas::base::BaseAlgorithm::_logName
protectedinherited

Definition at line 69 of file Algorithm.h.

◆ EDGE

FlagDefinition const lsst::meas::base::NaiveCentroidAlgorithm::EDGE
static
Initial value:
=
flagDefinitions.add("flag_edge", "Object too close to edge")

Definition at line 75 of file NaiveCentroid.h.

◆ FAILURE

FlagDefinition const lsst::meas::base::NaiveCentroidAlgorithm::FAILURE = flagDefinitions.addFailureFlag()
static

Definition at line 73 of file NaiveCentroid.h.

◆ NO_COUNTS

FlagDefinition const lsst::meas::base::NaiveCentroidAlgorithm::NO_COUNTS
static
Initial value:
=
flagDefinitions.add("flag_noCounts", "Object to be centroided has no counts")

Definition at line 74 of file NaiveCentroid.h.


The documentation for this class was generated from the following files: