LSST Applications  21.0.0-172-gfb10e10a+18fedfabac,22.0.0+297cba6710,22.0.0+80564b0ff1,22.0.0+8d77f4f51a,22.0.0+a28f4c53b1,22.0.0+dcf3732eb2,22.0.1-1-g7d6de66+2a20fdde0d,22.0.1-1-g8e32f31+297cba6710,22.0.1-1-geca5380+7fa3b7d9b6,22.0.1-12-g44dc1dc+2a20fdde0d,22.0.1-15-g6a90155+515f58c32b,22.0.1-16-g9282f48+790f5f2caa,22.0.1-2-g92698f7+dcf3732eb2,22.0.1-2-ga9b0f51+7fa3b7d9b6,22.0.1-2-gd1925c9+bf4f0e694f,22.0.1-24-g1ad7a390+a9625a72a8,22.0.1-25-g5bf6245+3ad8ecd50b,22.0.1-25-gb120d7b+8b5510f75f,22.0.1-27-g97737f7+2a20fdde0d,22.0.1-32-gf62ce7b1+aa4237961e,22.0.1-4-g0b3f228+2a20fdde0d,22.0.1-4-g243d05b+871c1b8305,22.0.1-4-g3a563be+32dcf1063f,22.0.1-4-g44f2e3d+9e4ab0f4fa,22.0.1-42-gca6935d93+ba5e5ca3eb,22.0.1-5-g15c806e+85460ae5f3,22.0.1-5-g58711c4+611d128589,22.0.1-5-g75bb458+99c117b92f,22.0.1-6-g1c63a23+7fa3b7d9b6,22.0.1-6-g50866e6+84ff5a128b,22.0.1-6-g8d3140d+720564cf76,22.0.1-6-gd805d02+cc5644f571,22.0.1-8-ge5750ce+85460ae5f3,master-g6e05de7fdc+babf819c66,master-g99da0e417a+8d77f4f51a,w.2021.48
LSST Data Management Base Package
Public Types | Public Member Functions | Friends | List of all members
lsst::afw::image::pixel::Pixel< _ImagePixelT, _MaskPixelT, _VariancePixelT > Class Template Reference

A pixel of a MaskedImage. More...

#include <Pixel.h>

Inheritance diagram for lsst::afw::image::pixel::Pixel< _ImagePixelT, _MaskPixelT, _VariancePixelT >:
lsst::afw::image::detail::MaskedImagePixel_tag

Public Types

using ImagePixelT = _ImagePixelT
 
using MaskPixelT = _MaskPixelT
 
using VariancePixelT = _VariancePixelT
 

Public Member Functions

 Pixel (ImagePixelT const &image, MaskPixelT const &mask=0x0, VariancePixelT const &variance=0)
 Construct a Pixel from references to its image/mask/variance components. More...
 
 Pixel (SinglePixel< ImagePixelT, MaskPixelT, VariancePixelT > &rhs)
 
 Pixel (Pixel const &rhs)=default
 
 Pixel (Pixel &&rhs)=default
 
 ~Pixel ()=default
 
Pixel operator= (Pixel const &rhs)
 
template<typename rhsExpr >
Pixel operator= (rhsExpr const &rhs)
 Assign a Pixel by evaluating an expression. More...
 
Pixel operator= (Pixel &&rhs)
 
Pixel operator= (double const &rhs_image)
 set the image part of a Pixel to rhs_image (the mask and variance are set to 0) More...
 
Pixel operator= (int const &rhs_image)
 set the image part of a Pixel to rhs_image (the mask and variance are set to 0) More...
 
ImagePixelT image () const
 Return the image part of a Pixel. More...
 
MaskPixelT mask () const
 Return the mask part of a Pixel. More...
 
VariancePixelT variance () const
 Return the variance part of a Pixel. More...
 
std::size_t hash_value () const noexcept
 Return a hash of this object. More...
 

Friends

template<typename T1 >
bool operator== (Pixel const &lhs, T1 const &rhs)
 Return true iff two pixels are equal (in all three of image, mask, and variance) More...
 
template<typename T1 >
bool operator!= (Pixel const &lhs, T1 const &rhs)
 Return true iff two pixels are unequal (in at least one of image, mask, and variance) More...
 
template<typename ExprT >
Pixel operator+= (Pixel const &e1, ExprT const &e2)
 Evaluate e1 += e2, and return e1. More...
 
template<typename ExprT >
Pixel operator-= (Pixel const &e1, ExprT const &e2)
 Evaluate e1 -= e2, and return e1. More...
 
template<typename ExprT >
Pixel operator*= (Pixel const &e1, ExprT const &e2)
 Evaluate e1 *= e2, and return e1. More...
 
template<typename ExprT >
Pixel operator/= (Pixel const &e1, ExprT const &e2)
 Evaluate e1 /= e2, and return e1. More...
 

Detailed Description

template<typename _ImagePixelT, typename _MaskPixelT, typename _VariancePixelT = double>
class lsst::afw::image::pixel::Pixel< _ImagePixelT, _MaskPixelT, _VariancePixelT >

A pixel of a MaskedImage.

Definition at line 148 of file Pixel.h.

Member Typedef Documentation

◆ ImagePixelT

template<typename _ImagePixelT , typename _MaskPixelT , typename _VariancePixelT = double>
using lsst::afw::image::pixel::Pixel< _ImagePixelT, _MaskPixelT, _VariancePixelT >::ImagePixelT = _ImagePixelT

Definition at line 150 of file Pixel.h.

◆ MaskPixelT

template<typename _ImagePixelT , typename _MaskPixelT , typename _VariancePixelT = double>
using lsst::afw::image::pixel::Pixel< _ImagePixelT, _MaskPixelT, _VariancePixelT >::MaskPixelT = _MaskPixelT

Definition at line 151 of file Pixel.h.

◆ VariancePixelT

template<typename _ImagePixelT , typename _MaskPixelT , typename _VariancePixelT = double>
using lsst::afw::image::pixel::Pixel< _ImagePixelT, _MaskPixelT, _VariancePixelT >::VariancePixelT = _VariancePixelT

Definition at line 152 of file Pixel.h.

Constructor & Destructor Documentation

◆ Pixel() [1/4]

template<typename _ImagePixelT , typename _MaskPixelT , typename _VariancePixelT = double>
lsst::afw::image::pixel::Pixel< _ImagePixelT, _MaskPixelT, _VariancePixelT >::Pixel ( ImagePixelT const &  image,
MaskPixelT const &  mask = 0x0,
VariancePixelT const &  variance = 0 
)
inline

Construct a Pixel from references to its image/mask/variance components.

Definition at line 162 of file Pixel.h.

163  : _image(const_cast<ImagePixelT&>(image)),
164  _mask(const_cast<MaskPixelT&>(mask)),
165  _variance(const_cast<VariancePixelT&>(variance)) {}
MaskPixelT mask() const
Return the mask part of a Pixel.
Definition: Pixel.h:219
_VariancePixelT VariancePixelT
Definition: Pixel.h:152
_ImagePixelT ImagePixelT
Definition: Pixel.h:150
VariancePixelT variance() const
Return the variance part of a Pixel.
Definition: Pixel.h:221
Backwards-compatibility support for depersisting the old Calib (FluxMag0/FluxMag0Err) objects.

◆ Pixel() [2/4]

template<typename _ImagePixelT , typename _MaskPixelT , typename _VariancePixelT = double>
lsst::afw::image::pixel::Pixel< _ImagePixelT, _MaskPixelT, _VariancePixelT >::Pixel ( SinglePixel< ImagePixelT, MaskPixelT, VariancePixelT > &  rhs)
inline

Definition at line 168 of file Pixel.h.

169  : _image(rhs._image), _mask(rhs._mask), _variance(rhs._variance) {}

◆ Pixel() [3/4]

template<typename _ImagePixelT , typename _MaskPixelT , typename _VariancePixelT = double>
lsst::afw::image::pixel::Pixel< _ImagePixelT, _MaskPixelT, _VariancePixelT >::Pixel ( Pixel< _ImagePixelT, _MaskPixelT, _VariancePixelT > const &  rhs)
default

◆ Pixel() [4/4]

template<typename _ImagePixelT , typename _MaskPixelT , typename _VariancePixelT = double>
lsst::afw::image::pixel::Pixel< _ImagePixelT, _MaskPixelT, _VariancePixelT >::Pixel ( Pixel< _ImagePixelT, _MaskPixelT, _VariancePixelT > &&  rhs)
default

◆ ~Pixel()

template<typename _ImagePixelT , typename _MaskPixelT , typename _VariancePixelT = double>
lsst::afw::image::pixel::Pixel< _ImagePixelT, _MaskPixelT, _VariancePixelT >::~Pixel ( )
default

Member Function Documentation

◆ hash_value()

template<typename _ImagePixelT , typename _MaskPixelT , typename _VariancePixelT = double>
std::size_t lsst::afw::image::pixel::Pixel< _ImagePixelT, _MaskPixelT, _VariancePixelT >::hash_value ( ) const
inlinenoexcept

Return a hash of this object.

Definition at line 239 of file Pixel.h.

239  {
240  // Completely arbitrary seed
241  // Convert to double to avoid inconsistently hashing equal numbers of different types
242  return utils::hashCombine(17, static_cast<double>(image()), static_cast<double>(mask()),
243  static_cast<double>(variance()));
244  }
ImagePixelT image() const
Return the image part of a Pixel.
Definition: Pixel.h:217
std::size_t hashCombine(std::size_t seed) noexcept
Combine hashes.
Definition: hashCombine.h:35

◆ image()

template<typename _ImagePixelT , typename _MaskPixelT , typename _VariancePixelT = double>
ImagePixelT lsst::afw::image::pixel::Pixel< _ImagePixelT, _MaskPixelT, _VariancePixelT >::image ( ) const
inline

Return the image part of a Pixel.

Definition at line 217 of file Pixel.h.

217 { return _image; }

◆ mask()

template<typename _ImagePixelT , typename _MaskPixelT , typename _VariancePixelT = double>
MaskPixelT lsst::afw::image::pixel::Pixel< _ImagePixelT, _MaskPixelT, _VariancePixelT >::mask ( ) const
inline

Return the mask part of a Pixel.

Definition at line 219 of file Pixel.h.

219 { return _mask; }

◆ operator=() [1/5]

template<typename _ImagePixelT , typename _MaskPixelT , typename _VariancePixelT = double>
Pixel lsst::afw::image::pixel::Pixel< _ImagePixelT, _MaskPixelT, _VariancePixelT >::operator= ( double const &  rhs_image)
inline

set the image part of a Pixel to rhs_image (the mask and variance are set to 0)

Definition at line 200 of file Pixel.h.

200  {
201  _image = rhs_image;
202  _mask = 0;
203  _variance = 0;
204 
205  return *this;
206  }

◆ operator=() [2/5]

template<typename _ImagePixelT , typename _MaskPixelT , typename _VariancePixelT = double>
Pixel lsst::afw::image::pixel::Pixel< _ImagePixelT, _MaskPixelT, _VariancePixelT >::operator= ( int const &  rhs_image)
inline

set the image part of a Pixel to rhs_image (the mask and variance are set to 0)

Definition at line 209 of file Pixel.h.

209  {
210  _image = rhs_image;
211  _mask = 0;
212  _variance = 0;
213 
214  return *this;
215  }

◆ operator=() [3/5]

template<typename _ImagePixelT , typename _MaskPixelT , typename _VariancePixelT = double>
Pixel lsst::afw::image::pixel::Pixel< _ImagePixelT, _MaskPixelT, _VariancePixelT >::operator= ( Pixel< _ImagePixelT, _MaskPixelT, _VariancePixelT > &&  rhs)
inline

Definition at line 197 of file Pixel.h.

197 { return *this = rhs; }

◆ operator=() [4/5]

template<typename _ImagePixelT , typename _MaskPixelT , typename _VariancePixelT = double>
Pixel lsst::afw::image::pixel::Pixel< _ImagePixelT, _MaskPixelT, _VariancePixelT >::operator= ( Pixel< _ImagePixelT, _MaskPixelT, _VariancePixelT > const &  rhs)
inline

Definition at line 175 of file Pixel.h.

175  { // the following template won't stop the compiler trying to generate
176  // operator=
177  _variance = rhs.variance(); // evaluate before we update image()
178  _image = rhs.image();
179  _mask = rhs.mask();
180 
181  return *this;
182  }

◆ operator=() [5/5]

template<typename _ImagePixelT , typename _MaskPixelT , typename _VariancePixelT = double>
template<typename rhsExpr >
Pixel lsst::afw::image::pixel::Pixel< _ImagePixelT, _MaskPixelT, _VariancePixelT >::operator= ( rhsExpr const &  rhs)
inline

Assign a Pixel by evaluating an expression.

We use C++ template expressions to build a compile-time parse tree to evaluate Pixel expressions; this is where we evaluate the rhs and set the Pixel's values

Definition at line 189 of file Pixel.h.

189  {
190  _variance = rhs.variance(); // evaluate before we update image()
191  _image = rhs.image();
192  _mask = rhs.mask();
193 
194  return *this;
195  }

◆ variance()

template<typename _ImagePixelT , typename _MaskPixelT , typename _VariancePixelT = double>
VariancePixelT lsst::afw::image::pixel::Pixel< _ImagePixelT, _MaskPixelT, _VariancePixelT >::variance ( ) const
inline

Return the variance part of a Pixel.

Definition at line 221 of file Pixel.h.

221 { return _variance; }

Friends And Related Function Documentation

◆ operator!=

template<typename _ImagePixelT , typename _MaskPixelT , typename _VariancePixelT = double>
template<typename T1 >
bool operator!= ( Pixel< _ImagePixelT, _MaskPixelT, _VariancePixelT > const &  lhs,
T1 const &  rhs 
)
friend

Return true iff two pixels are unequal (in at least one of image, mask, and variance)

Definition at line 234 of file Pixel.h.

234  {
235  return !(lhs == rhs);
236  }

◆ operator*=

template<typename _ImagePixelT , typename _MaskPixelT , typename _VariancePixelT = double>
template<typename ExprT >
Pixel operator*= ( Pixel< _ImagePixelT, _MaskPixelT, _VariancePixelT > const &  e1,
ExprT const &  e2 
)
friend

Evaluate e1 *= e2, and return e1.

Definition at line 269 of file Pixel.h.

269  {
270  Pixel tmp(e1); // n.b. shares storage with e1 but gets around "const" (which is required)
271  tmp = BinaryExpr<Pixel, ExprT, std::multiplies<ImagePixelT>, bitwise_or<MaskPixelT>,
272  variance_multiplies<VariancePixelT> >(tmp, e2);
273  return tmp;
274  }
Pixel(ImagePixelT const &image, MaskPixelT const &mask=0x0, VariancePixelT const &variance=0)
Construct a Pixel from references to its image/mask/variance components.
Definition: Pixel.h:162

◆ operator+=

template<typename _ImagePixelT , typename _MaskPixelT , typename _VariancePixelT = double>
template<typename ExprT >
Pixel operator+= ( Pixel< _ImagePixelT, _MaskPixelT, _VariancePixelT > const &  e1,
ExprT const &  e2 
)
friend

Evaluate e1 += e2, and return e1.

Definition at line 251 of file Pixel.h.

251  {
252  Pixel tmp(e1); // n.b. shares storage with e1 but gets around "const" (which is required)
253  tmp = BinaryExpr<Pixel, ExprT, std::plus<ImagePixelT>, bitwise_or<MaskPixelT>,
254  variance_plus<VariancePixelT> >(tmp, e2);
255  return tmp;
256  }

◆ operator-=

template<typename _ImagePixelT , typename _MaskPixelT , typename _VariancePixelT = double>
template<typename ExprT >
Pixel operator-= ( Pixel< _ImagePixelT, _MaskPixelT, _VariancePixelT > const &  e1,
ExprT const &  e2 
)
friend

Evaluate e1 -= e2, and return e1.

Definition at line 260 of file Pixel.h.

260  {
261  Pixel tmp(e1); // n.b. shares storage with e1 but gets around "const" (which is required)
262  tmp = BinaryExpr<Pixel, ExprT, std::minus<ImagePixelT>, bitwise_or<MaskPixelT>,
263  variance_plus<VariancePixelT> >(tmp, e2);
264  return tmp;
265  }

◆ operator/=

template<typename _ImagePixelT , typename _MaskPixelT , typename _VariancePixelT = double>
template<typename ExprT >
Pixel operator/= ( Pixel< _ImagePixelT, _MaskPixelT, _VariancePixelT > const &  e1,
ExprT const &  e2 
)
friend

Evaluate e1 /= e2, and return e1.

Definition at line 278 of file Pixel.h.

278  {
279  Pixel tmp(e1); // n.b. shares storage with e1 but gets around "const" (which is required)
280  tmp = BinaryExpr<Pixel, ExprT, std::divides<ImagePixelT>, bitwise_or<MaskPixelT>,
281  variance_divides<VariancePixelT> >(tmp, e2);
282  return tmp;
283  }

◆ operator==

template<typename _ImagePixelT , typename _MaskPixelT , typename _VariancePixelT = double>
template<typename T1 >
bool operator== ( Pixel< _ImagePixelT, _MaskPixelT, _VariancePixelT > const &  lhs,
T1 const &  rhs 
)
friend

Return true iff two pixels are equal (in all three of image, mask, and variance)

Definition at line 228 of file Pixel.h.

228  {
229  return lhs.image() == rhs.image() && lhs.mask() == rhs.mask() && lhs.variance() == rhs.variance();
230  }

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