LSSTApplications  19.0.0-14-gb0260a2+1b4fc4249b,20.0.0+19029f0d82,20.0.0+66077e84be,20.0.0+b8df9e862d,20.0.0+e2e26847c2,20.0.0+e47e9b3a81,20.0.0-1-g253301a+19029f0d82,20.0.0-1-g2b7511a+46a6078777,20.0.0-1-g3dda6ea+905cef1a44,20.0.0-1-g4d801e7+5fcfd52d2e,20.0.0-1-g5b95a8c+19889959e1,20.0.0-1-gc96f8cb+d5e4df5959,20.0.0-1-gedffbd8+6ca2c30637,20.0.0-10-g0891cd99+caa8c2603a,20.0.0-13-gad96b2d30+614f89f815,20.0.0-17-gcdbda88+2b141d441d,20.0.0-2-g4dae9ad+d5e4df5959,20.0.0-2-g52fdb94+046030bafd,20.0.0-2-g61b8584+85c46248f3,20.0.0-2-g8177d33+f2ab36af31,20.0.0-2-gb780d76+f45b7d88f4,20.0.0-2-gf072044+19029f0d82,20.0.0-22-gdf434b7+d5e4df5959,20.0.0-23-g10eeb28+452d7a9290,20.0.0-23-g8900aa8+a8b4322b0e,20.0.0-3-g1653f94+85c46248f3,20.0.0-3-g4cc78c6+63636aeed8,20.0.0-3-g750bffe+7a989609f2,20.0.0-3-gbd60e8c+ff10c6d78d,20.0.0-33-g078e64d5+a2256d2c79,20.0.0-4-g97dc21a+a8b4322b0e,20.0.0-4-gfea843c+f45b7d88f4,20.0.0-5-g357b56b+f45b7d88f4,20.0.0-6-g9a5b7a1+3d4d12ed4e,20.0.0-61-g4de25fb+ddf3488217,20.0.0-7-gcda7bf1+dffc53c16b,w.2020.44
LSSTDataManagementBasePackage
Public Types | Public Member Functions | Static Public Member Functions | List of all members
lsst::afw::detection::Threshold Class Referencefinal

A Threshold is used to pass a threshold value to detection algorithms. More...

#include <Threshold.h>

Public Types

enum  ThresholdType {
  VALUE, BITMASK, STDEV, VARIANCE,
  PIXEL_STDEV
}
 Types of threshold: More...
 

Public Member Functions

 Threshold (double const value, ThresholdType const type=VALUE, bool const polarity=true, double const includeMultiplier=1.0)
 Threshold constructor. More...
 
 ~Threshold () noexcept=default
 
 Threshold (Threshold const &) noexcept=default
 
 Threshold (Threshold &&) noexcept=default
 
Thresholdoperator= (Threshold const &) noexcept=default
 
Thresholdoperator= (Threshold &&) noexcept=default
 
ThresholdType getType () const noexcept
 return type of threshold More...
 
double getValue (const double param=-1) const
 return value of threshold, to be interpreted via type More...
 
template<typename ImageT >
double getValue (ImageT const &image) const
 return value of threshold by interrogating the image, if required More...
 
bool getPolarity () const noexcept
 return Threshold's polarity More...
 
void setPolarity (bool const polarity) noexcept
 set Threshold's polarity More...
 
double getIncludeMultiplier () const noexcept
 return includeMultiplier More...
 
void setIncludeMultiplier (double const includeMultiplier)
 set includeMultiplier More...
 

Static Public Member Functions

static ThresholdType parseTypeString (std::string const &typeStr)
 
static std::string getTypeString (ThresholdType const &type)
 

Detailed Description

A Threshold is used to pass a threshold value to detection algorithms.

The threshold may be a simple value (type == VALUE), or in units of the image standard deviation. Alternatively you may specify that you'll provide the standard deviation (type == STDEV) or variance (type == VARIANCE)

Note that the constructor is not declared explicit, so you may pass a bare threshold, and it'll be interpreted as a VALUE.

Definition at line 43 of file Threshold.h.

Member Enumeration Documentation

◆ ThresholdType

Types of threshold:

Enumerator
VALUE 

Use pixel value.

BITMASK 

Use (pixels & (given mask))

STDEV 

Use number of sigma given s.d.

VARIANCE 

Use number of sigma given variance.

PIXEL_STDEV 

Use number of sigma given per-pixel s.d.

Definition at line 46 of file Threshold.h.

46  {
47  VALUE,
48  BITMASK,
49  STDEV,
50  VARIANCE,
52  };

Constructor & Destructor Documentation

◆ Threshold() [1/3]

lsst::afw::detection::Threshold::Threshold ( double const  value,
ThresholdType const  type = VALUE,
bool const  polarity = true,
double const  includeMultiplier = 1.0 
)
inline

Threshold constructor.

Parameters
valuedesired threshold value
typeinterpretation of type
polaritysearch pixel above threshold? (useful for -ve thresholds)
includeMultiplierthreshold multiplier for inclusion in FootprintSet

Definition at line 57 of file Threshold.h.

62  : _value(value), _type(type), _polarity(polarity), _includeMultiplier(includeMultiplier) {}

◆ ~Threshold()

lsst::afw::detection::Threshold::~Threshold ( )
defaultnoexcept

◆ Threshold() [2/3]

lsst::afw::detection::Threshold::Threshold ( Threshold const &  )
defaultnoexcept

◆ Threshold() [3/3]

lsst::afw::detection::Threshold::Threshold ( Threshold &&  )
defaultnoexcept

Member Function Documentation

◆ getIncludeMultiplier()

double lsst::afw::detection::Threshold::getIncludeMultiplier ( ) const
inlinenoexcept

return includeMultiplier

Definition at line 100 of file Threshold.h.

100 { return _includeMultiplier; }

◆ getPolarity()

bool lsst::afw::detection::Threshold::getPolarity ( ) const
inlinenoexcept

return Threshold's polarity

Definition at line 92 of file Threshold.h.

92 { return _polarity; }

◆ getType()

ThresholdType lsst::afw::detection::Threshold::getType ( ) const
inlinenoexcept

return type of threshold

Definition at line 71 of file Threshold.h.

71 { return _type; }

◆ getTypeString()

std::string lsst::afw::detection::Threshold::getTypeString ( ThresholdType const &  type)
static

Definition at line 54 of file Threshold.cc.

54  {
55  if (type == VALUE) {
56  return "value";
57  } else if (type == STDEV) {
58  return "stdev";
59  } else if (type == VARIANCE) {
60  return "variance";
61  } else {
63  (boost::format("Unsopported Threshold type: %d") % type).str());
64  }
65 }

◆ getValue() [1/2]

double lsst::afw::detection::Threshold::getValue ( const double  param = -1) const

return value of threshold, to be interpreted via type

Parameters
paramvalue of variance/stdev if needed
Returns
value of threshold

Definition at line 67 of file Threshold.cc.

67  {
68  switch (_type) {
69  case STDEV:
70  if (param <= 0) {
72  (boost::format("St. dev. must be > 0: %g") % param).str());
73  }
74  return _value * param;
75  case VALUE:
76  case BITMASK:
77  case PIXEL_STDEV:
78  return _value;
79  case VARIANCE:
80  if (param <= 0) {
82  (boost::format("Variance must be > 0: %g") % param).str());
83  }
84  return _value * std::sqrt(param);
85  default:
87  (boost::format("Unsupported type: %d") % _type).str());
88  }
89 }

◆ getValue() [2/2]

template<typename ImageT >
double lsst::afw::detection::Threshold::getValue ( ImageT const &  image) const

return value of threshold by interrogating the image, if required

Parameters
imageImage to interrogate, if threshold type demands
Returns
value of threshold

Definition at line 92 of file Threshold.cc.

92  {
93  double param = -1; // Parameter for getValue()
94  if (_type == STDEV || _type == VARIANCE) {
95  math::Statistics stats = math::makeStatistics(image, math::STDEVCLIP);
96  double const sd = stats.getValue(math::STDEVCLIP);
97 
98  LOGL_DEBUG("afw.detection.threshold", "St. Dev = %g", sd);
99 
100  if (_type == VARIANCE) {
101  param = sd * sd;
102  } else {
103  param = sd;
104  }
105  }
106  return getValue(param);
107 }

◆ operator=() [1/2]

Threshold& lsst::afw::detection::Threshold::operator= ( Threshold &&  )
defaultnoexcept

◆ operator=() [2/2]

Threshold& lsst::afw::detection::Threshold::operator= ( Threshold const &  )
defaultnoexcept

◆ parseTypeString()

Threshold::ThresholdType lsst::afw::detection::Threshold::parseTypeString ( std::string const &  typeStr)
static

Definition at line 37 of file Threshold.cc.

37  {
38  if (typeStr.compare("bitmask") == 0) {
39  return Threshold::BITMASK;
40  } else if (typeStr.compare("value") == 0) {
41  return Threshold::VALUE;
42  } else if (typeStr.compare("stdev") == 0) {
43  return Threshold::STDEV;
44  } else if (typeStr.compare("variance") == 0) {
45  return Threshold::VARIANCE;
46  } else if (typeStr.compare("pixel_stdev") == 0) {
48  } else {
50  (boost::format("Unsupported Threshold type: %s") % typeStr).str());
51  }
52 }

◆ setIncludeMultiplier()

void lsst::afw::detection::Threshold::setIncludeMultiplier ( double const  includeMultiplier)
inline

set includeMultiplier

Parameters
includeMultiplierdesired multiplier

Definition at line 102 of file Threshold.h.

103  {
104  _includeMultiplier = includeMultiplier;
105  }

◆ setPolarity()

void lsst::afw::detection::Threshold::setPolarity ( bool const  polarity)
inlinenoexcept

set Threshold's polarity

Parameters
polaritydesired polarity

Definition at line 94 of file Threshold.h.

95  {
96  _polarity = polarity;
97  }

The documentation for this class was generated from the following files:
lsst::afw::image
Backwards-compatibility support for depersisting the old Calib (FluxMag0/FluxMag0Err) objects.
Definition: imageAlgorithm.dox:1
lsst::afw::detection::Threshold::PIXEL_STDEV
@ PIXEL_STDEV
Use number of sigma given per-pixel s.d.
Definition: Threshold.h:51
lsst.pex.config.history.format
def format(config, name=None, writeSourceLine=True, prefix="", verbose=False)
Definition: history.py:174
std::sqrt
T sqrt(T... args)
lsst::afw::math::makeStatistics
Statistics makeStatistics(lsst::afw::image::Image< Pixel > const &img, lsst::afw::image::Mask< image::MaskPixel > const &msk, int const flags, StatisticsControl const &sctrl=StatisticsControl())
Handle a watered-down front-end to the constructor (no variance)
Definition: Statistics.h:354
lsst::afw::detection::Threshold::STDEV
@ STDEV
Use number of sigma given s.d.
Definition: Threshold.h:49
lsst::afw::math::STDEVCLIP
@ STDEVCLIP
estimate sample N-sigma clipped stdev (N set in StatisticsControl, default=3)
Definition: Statistics.h:73
lsst::afw::detection::Threshold::VARIANCE
@ VARIANCE
Use number of sigma given variance.
Definition: Threshold.h:50
lsst::afw::detection::Threshold::VALUE
@ VALUE
Use pixel value.
Definition: Threshold.h:47
lsst::afw::detection::Threshold::BITMASK
@ BITMASK
Use (pixels & (given mask))
Definition: Threshold.h:48
LSST_EXCEPT
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
Definition: Exception.h:48
lsst::afw::detection::Threshold::getValue
double getValue(const double param=-1) const
return value of threshold, to be interpreted via type
Definition: Threshold.cc:67
lsst.pex::exceptions::InvalidParameterError
Reports invalid arguments.
Definition: Runtime.h:66
LOGL_DEBUG
#define LOGL_DEBUG(logger, message...)
Definition: Log.h:504
type
table::Key< int > type
Definition: Detector.cc:163