LSST Applications g0265f82a02+d6b5cd48b5,g02d81e74bb+a41d3748ce,g1470d8bcf6+6be6c9203b,g2079a07aa2+14824f138e,g212a7c68fe+a4f2ea4efa,g2305ad1205+72971fe858,g295015adf3+ab2c85acae,g2bbee38e9b+d6b5cd48b5,g337abbeb29+d6b5cd48b5,g3ddfee87b4+31b3a28dff,g487adcacf7+082e807817,g50ff169b8f+5929b3527e,g52b1c1532d+a6fc98d2e7,g591dd9f2cf+b2918d57ae,g5a732f18d5+66d966b544,g64a986408d+a41d3748ce,g858d7b2824+a41d3748ce,g8a8a8dda67+a6fc98d2e7,g99cad8db69+7fe4acdf18,g9ddcbc5298+d4bad12328,ga1e77700b3+246acaaf9c,ga8c6da7877+84af8b3ff8,gb0e22166c9+3863383f4c,gb6a65358fc+d6b5cd48b5,gba4ed39666+9664299f35,gbb8dafda3b+d8d527deb2,gc07e1c2157+b2dbe6b631,gc120e1dc64+61440b2abb,gc28159a63d+d6b5cd48b5,gcf0d15dbbd+31b3a28dff,gdaeeff99f8+a38ce5ea23,ge6526c86ff+39927bb362,ge79ae78c31+d6b5cd48b5,gee10cc3b42+a6fc98d2e7,gf1cff7945b+a41d3748ce,v24.1.5.rc1
LSST Data Management Base Package
Loading...
Searching...
No Matches
Public Types | Public Member Functions | List of all members
lsst::ip::diffim::ImageStatistics< PixelT > Class Template Reference

Class to calculate difference image statistics. More...

#include <ImageStatistics.h>

Public Types

typedef std::shared_ptr< ImageStatisticsPtr
 
typedef lsst::afw::image::MaskedImage< PixelT >::x_iterator x_iterator
 

Public Member Functions

 ImageStatistics (lsst::daf::base::PropertySet const &ps)
 
virtual ~ImageStatistics ()
 
void reset ()
 
void apply (lsst::afw::image::MaskedImage< PixelT > const &image)
 
void apply (lsst::afw::image::MaskedImage< PixelT > const &image, int core)
 
void setBpMask (lsst::afw::image::MaskPixel bpMask)
 
lsst::afw::image::MaskPixel getBpMask ()
 
double getMean () const
 
double getVariance () const
 
double getRms () const
 
int getNpix () const
 
bool evaluateQuality (lsst::daf::base::PropertySet const &ps)
 

Detailed Description

template<typename PixelT>
class lsst::ip::diffim::ImageStatistics< PixelT >

Class to calculate difference image statistics.

Note
Find mean and unbiased variance of pixel residuals in units of sqrt(variance)

Definition at line 59 of file ImageStatistics.h.

Member Typedef Documentation

◆ Ptr

Definition at line 61 of file ImageStatistics.h.

◆ x_iterator

template<typename PixelT >
typedef lsst::afw::image::MaskedImage<PixelT>::x_iterator lsst::ip::diffim::ImageStatistics< PixelT >::x_iterator

Definition at line 62 of file ImageStatistics.h.

Constructor & Destructor Documentation

◆ ImageStatistics()

template<typename PixelT >
lsst::ip::diffim::ImageStatistics< PixelT >::ImageStatistics ( lsst::daf::base::PropertySet const & ps)
inline

Definition at line 64 of file ImageStatistics.h.

64 :
65 _xsum(0.), _x2sum(0.), _npix(0), _bpMask(0) {
66
67 std::vector<std::string> detBadMaskPlanes = ps.getArray<std::string>("badMaskPlanes");
68 for (std::vector<std::string>::iterator mi = detBadMaskPlanes.begin();
69 mi != detBadMaskPlanes.end(); ++mi){
70
71 try {
73 } catch (pexExcept::Exception& e) {
74 LOGL_DEBUG("TRACE4.ip.diffim.ImageStatistics",
75 "Cannot update bad bit mask with %s", (*mi).c_str());
76 LOGL_DEBUG("TRACE5.ip.diffim.ImageStatistics",
77 e.what());
78 }
79 }
80 } ;
#define LOGL_DEBUG(logger, message...)
Log a debug-level message using a varargs/printf style interface.
Definition Log.h:515
T begin(T... args)
static MaskPixelT getPlaneBitMask(const std::vector< std::string > &names)
Return the bitmask corresponding to a vector of plane names OR'd together.
Definition Mask.cc:376
Provides consistent interface for LSST exceptions.
Definition Exception.h:107
virtual char const * what(void) const noexcept
Return a character string summarizing this exception.
Definition Exception.cc:99
T end(T... args)

◆ ~ImageStatistics()

template<typename PixelT >
virtual lsst::ip::diffim::ImageStatistics< PixelT >::~ImageStatistics ( )
inlinevirtual

Definition at line 81 of file ImageStatistics.h.

81{} ;

Member Function Documentation

◆ apply() [1/2]

template<typename PixelT >
void lsst::ip::diffim::ImageStatistics< PixelT >::apply ( lsst::afw::image::MaskedImage< PixelT > const & image)
inline

Definition at line 87 of file ImageStatistics.h.

87 {
88 apply(image, -1);
89 }
void apply(lsst::afw::image::MaskedImage< PixelT > const &image)

◆ apply() [2/2]

template<typename PixelT >
void lsst::ip::diffim::ImageStatistics< PixelT >::apply ( lsst::afw::image::MaskedImage< PixelT > const & image,
int core )
inline

Definition at line 91 of file ImageStatistics.h.

91 {
92 reset();
93 int y0, y1, x0, x1;
94 if (core == -1) {
95 y0 = 0;
96 y1 = image.getHeight();
97 x0 = 0;
98 x1 = image.getWidth();
99 }
100 else {
101 y0 = std::max(0, image.getHeight()/2 - core);
102 y1 = std::min(image.getHeight(), image.getHeight()/2 + core + 1);
103 x0 = std::max(0, image.getWidth()/2 - core);
104 x1 = std::min(image.getWidth(), image.getWidth()/2 + core + 1);
105 }
106
107 for (int y = y0; y != y1; ++y) {
108 for (x_iterator ptr = image.x_at(x0, y), end = image.x_at(x1, y);
109 ptr != end; ++ptr) {
110 if (!((*ptr).mask() & _bpMask)) {
111 double const ivar = 1. / (*ptr).variance();
112 if (std::isfinite(ivar)) {
113 _xsum += (*ptr).image() * sqrt(ivar);
114 _x2sum += (*ptr).image() * (*ptr).image() * ivar;
115 _npix += 1;
116 }
117 }
118 }
119 }
120 if ((!std::isfinite(_xsum)) || (!std::isfinite(_x2sum))) {
122 "Nan/Inf in ImageStatistics.apply");
123 }
124 }
int end
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
Definition Exception.h:48
uint64_t * ptr
Definition RangeSet.cc:95
int y
Definition SpanSet.cc:48
lsst::afw::image::MaskedImage< PixelT >::x_iterator x_iterator
T isfinite(T... args)
T max(T... args)
T min(T... args)

◆ evaluateQuality()

template<typename PixelT >
bool lsst::ip::diffim::ImageStatistics< PixelT >::evaluateQuality ( lsst::daf::base::PropertySet const & ps)
inline

Definition at line 146 of file ImageStatistics.h.

146 {
147 if ( fabs(getMean()) > ps.getAsDouble("maximumFootprintResidualMean") ) return false;
148 if ( getRms() > ps.getAsDouble("maximumFootprintResidualStd") ) return false;
149 return true;
150 }
T fabs(T... args)

◆ getBpMask()

template<typename PixelT >
lsst::afw::image::MaskPixel lsst::ip::diffim::ImageStatistics< PixelT >::getBpMask ( )
inline

Definition at line 127 of file ImageStatistics.h.

127{return _bpMask;}

◆ getMean()

template<typename PixelT >
double lsst::ip::diffim::ImageStatistics< PixelT >::getMean ( ) const
inline

Definition at line 130 of file ImageStatistics.h.

130 {
131 return (_npix > 0) ? _xsum/_npix : std::numeric_limits<double>::quiet_NaN();
132 }
T quiet_NaN(T... args)

◆ getNpix()

template<typename PixelT >
int lsst::ip::diffim::ImageStatistics< PixelT >::getNpix ( ) const
inline

Definition at line 143 of file ImageStatistics.h.

143{ return _npix; }

◆ getRms()

template<typename PixelT >
double lsst::ip::diffim::ImageStatistics< PixelT >::getRms ( ) const
inline

Definition at line 139 of file ImageStatistics.h.

139 {
140 return sqrt(getVariance());
141 }

◆ getVariance()

template<typename PixelT >
double lsst::ip::diffim::ImageStatistics< PixelT >::getVariance ( ) const
inline

Definition at line 134 of file ImageStatistics.h.

134 {
135 return (_npix > 1) ? (_x2sum/_npix - _xsum/_npix * _xsum/_npix) * _npix/(_npix-1.) :
137 }

◆ reset()

template<typename PixelT >
void lsst::ip::diffim::ImageStatistics< PixelT >::reset ( )
inline

Definition at line 84 of file ImageStatistics.h.

84{ _xsum = _x2sum = 0.; _npix = 0;}

◆ setBpMask()

template<typename PixelT >
void lsst::ip::diffim::ImageStatistics< PixelT >::setBpMask ( lsst::afw::image::MaskPixel bpMask)
inline

Definition at line 126 of file ImageStatistics.h.

126{_bpMask = bpMask;}

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