LSSTApplications  10.0+286,10.0+36,10.0+46,10.0-2-g4f67435,10.1+152,10.1+37,11.0,11.0+1,11.0-1-g47edd16,11.0-1-g60db491,11.0-1-g7418c06,11.0-2-g04d2804,11.0-2-g68503cd,11.0-2-g818369d,11.0-2-gb8b8ce7
LSSTDataManagementBasePackage
Public Types | Public Member Functions | Private 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

enum  { FAILURE =FlagHandler::FAILURE, NO_COUNTS, EDGE, N_FLAGS }
 Flag bits to be used with the 'flags' data member of the Result object. More...
 
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
 
virtual void fail (afw::table::SourceRecord &measRecord, MeasurementError *error=NULL) const
 
- Public Member Functions inherited from lsst::meas::base::SimpleAlgorithm
virtual void measureForced (afw::table::SourceRecord &measRecord, afw::image::Exposure< float > const &exposure, afw::table::SourceRecord const &refRecord, afw::image::Wcs const &refWcs) const
 
virtual void measureNForced (afw::table::SourceCatalog const &measCat, afw::image::Exposure< float > const &exposure, afw::table::SourceCatalog const &refRecord, afw::image::Wcs const &refWcs) const
 
- Public Member Functions inherited from lsst::meas::base::SingleFrameAlgorithm
virtual void measureN (afw::table::SourceCatalog const &measCat, afw::image::Exposure< float > const &exposure) const
 
- Public Member Functions inherited from lsst::meas::base::BaseAlgorithm
virtual ~BaseAlgorithm ()
 

Private Attributes

Control _ctrl
 
CentroidResultKey _centroidKey
 
FlagHandler _flagHandler
 
SafeCentroidExtractor _centroidExtractor
 

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 62 of file NaiveCentroid.h.

Member Typedef Documentation

Definition at line 77 of file NaiveCentroid.h.

Member Enumeration Documentation

anonymous enum

Flag bits to be used with the 'flags' data member of the Result object.

Inspect getFlagDefinitions() for more detailed explanations of each flag.

Enumerator
FAILURE 
NO_COUNTS 
EDGE 
N_FLAGS 

Definition at line 70 of file NaiveCentroid.h.

Constructor & Destructor Documentation

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

Definition at line 43 of file NaiveCentroid.cc.

47  : _ctrl(ctrl),
49  CentroidResultKey::addFields(schema, name, "centroid from Naive Centroid algorithm", NO_UNCERTAINTY)
50  ),
52 {
54  getFlagDefinitions().begin(), getFlagDefinitions().end());
55 }
table::Key< std::string > name
Definition: ApCorrMap.cc:71
afw::table::Schema schema
Definition: GaussianPsf.cc:41
SafeCentroidExtractor _centroidExtractor
Definition: NaiveCentroid.h:96
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...
Algorithm provides no uncertainy information at all.
Definition: constants.h:42
static FlagHandler addFields(afw::table::Schema &schema, std::string const &prefix, FlagDefinition const *begin, FlagDefinition const *end)
Definition: FlagHandler.cc:28

Member Function Documentation

void lsst::meas::base::NaiveCentroidAlgorithm::fail ( afw::table::SourceRecord measRecord,
MeasurementError error = NULL 
) 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 117 of file NaiveCentroid.cc.

117  {
118  _flagHandler.handleFailure(measRecord, error);
119 }
def error
Definition: log.py:108
void handleFailure(afw::table::BaseRecord &record, MeasurementError const *error=NULL) const
Definition: FlagHandler.cc:59
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 57 of file NaiveCentroid.cc.

60  {
61 
63  CentroidResult result;
64  result.x = center.getX();
65  result.y = center.getY();
66  measRecord.set(_centroidKey, result); // better than NaN
67 
68  typedef afw::image::Image<float> ImageT;
69  ImageT const& image = *exposure.getMaskedImage().getImage();
70 
71  int x = center.getX(); // FIXME: this is different from GaussianCentroid and SdssCentroid here,
72  int y = center.getY(); // and probably shouldn't be.
73 
74  x -= image.getX0(); // work in image Pixel coordinates
75  y -= image.getY0();
76 
77  if (x < 1 || x >= image.getWidth() - 1 || y < 1 || y >= image.getHeight() - 1) {
78 
79  throw LSST_EXCEPT(
80  MeasurementError,
82  EDGE
83  );
84  }
85 
86  ImageT::xy_locator im = image.xy_at(x, y);
87 
88  double const sum =
89  (im(-1, 1) + im( 0, 1) + im( 1, 1) +
90  im(-1, 0) + im( 0, 0) + im( 1, 0) +
91  im(-1, -1) + im( 0, -1) + im( 1, -1))
92  - 9 * _ctrl.background;
93 
94  if (sum == 0.0) {
95  throw LSST_EXCEPT(
96  MeasurementError,
98  NO_COUNTS
99  );
100  }
101 
102  double const sum_x =
103  -im(-1, 1) + im( 1, 1) +
104  -im(-1, 0) + im( 1, 0) +
105  -im(-1, -1) + im( 1, -1);
106  double const sum_y =
107  (im(-1, 1) + im( 0, 1) + im( 1, 1)) -
108  (im(-1, -1) + im( 0, -1) + im( 1, -1));
109 
110  result.x = lsst::afw::image::indexToPosition(x + image.getX0()) + sum_x / sum;
111  result.y = lsst::afw::image::indexToPosition(y + image.getY0()) + sum_y / sum;
112  measRecord.set(_centroidKey, result);
113  _flagHandler.setValue(measRecord, FAILURE, false); // if we had a suspect flag, we'd set that instead
114 }
int y
double indexToPosition(double ind)
Convert image index to image position.
Definition: ImageUtils.h:54
Point< double, 2 > Point2D
Definition: Point.h:286
boost::enable_if< typename ExpressionTraits< Scalar >::IsScalar, Scalar >::type sum(Scalar const &scalar)
Definition: operators.h:1250
table::Key< table::Array< Kernel::Pixel > > image
Definition: FixedKernel.cc:117
SafeCentroidExtractor _centroidExtractor
Definition: NaiveCentroid.h:96
FlagDefinition getDefinition(int i) const
Definition: FlagHandler.h:66
if(width!=gim.getWidth()||height!=gim.getHeight()||x0!=gim.getX0()||y0!=gim.getY0())
Definition: saturated.cc:47
void setValue(afw::table::BaseRecord &record, int i, bool value) const
Definition: FlagHandler.h:72
double x
#define LSST_EXCEPT(type,...)
Definition: Exception.h:46
double background
&quot;Value to subtract from the image pixel values&quot; ;
Definition: NaiveCentroid.h:44

Member Data Documentation

SafeCentroidExtractor lsst::meas::base::NaiveCentroidAlgorithm::_centroidExtractor
private

Definition at line 96 of file NaiveCentroid.h.

CentroidResultKey lsst::meas::base::NaiveCentroidAlgorithm::_centroidKey
private

Definition at line 94 of file NaiveCentroid.h.

Control lsst::meas::base::NaiveCentroidAlgorithm::_ctrl
private

Definition at line 93 of file NaiveCentroid.h.

FlagHandler lsst::meas::base::NaiveCentroidAlgorithm::_flagHandler
private

Definition at line 95 of file NaiveCentroid.h.


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