Loading [MathJax]/extensions/tex2jax.js
LSST Applications g00d24c3146+07134a258f,g0fba68d861+c6b9c001b5,g1ec0fe41b4+f536777771,g1fd858c14a+958e7c0317,g216c3ac8a7+c5d9439d40,g35bb328faa+fcb1d3bbc8,g4d2262a081+0aed3363b2,g53246c7159+fcb1d3bbc8,g56a49b3a55+a44ca4bdea,g5a012ec0e7+3632fc3ff3,g60b5630c4e+07134a258f,g67b6fd64d1+ed4b5058f4,g78460c75b0+2f9a1b4bcd,g786e29fd12+cf7ec2a62a,g8180f54f50+a220987f6f,g8352419a5c+fcb1d3bbc8,g8852436030+bef424d5ca,g89139ef638+ed4b5058f4,g9125e01d80+fcb1d3bbc8,g94187f82dc+07134a258f,g989de1cb63+ed4b5058f4,g9ccd5d7f00+b7cae620c0,g9d31334357+07134a258f,g9f33ca652e+31a8ea3a30,gabe3b4be73+1e0a283bba,gabf8522325+fa80ff7197,gb1101e3267+c50a309191,gb58c049af0+f03b321e39,gb89ab40317+ed4b5058f4,gc0af124501+69caa252ab,gcf25f946ba+bef424d5ca,gd6cbbdb0b4+bb83cc51f8,gdd6d3460e7+d236de904b,gde0f65d7ad+d50ffb433c,ge278dab8ac+d65b3c2b70,ge410e46f29+ed4b5058f4,gf5e32f922b+fcb1d3bbc8,gf67bdafdda+ed4b5058f4,w.2025.16
LSST Data Management Base Package
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
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.
 
 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.
 
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)
 
Pixel operator= (int const &rhs_image)
 set the image part of a Pixel to rhs_image (the mask and variance are set to 0)
 
ImagePixelT image () const
 Return the image part of a Pixel.
 
MaskPixelT mask () const
 Return the mask part of a Pixel.
 
VariancePixelT variance () const
 Return the variance part of a Pixel.
 
std::size_t hash_value () const noexcept
 Return a hash of this object.
 

Friends

template<typename T1, typename T2, typename T3>
bool operator== (Pixel const &lhs, Pixel< T1, T2, T3 > const &rhs)
 Return true if two pixels are equal (in all three of image, mask, and variance) Fix C++20 compilation ambiguous overload problem by creating overloads.
 
template<typename T1, typename T2, typename T3>
bool operator== (Pixel const &lhs, SinglePixel< T1, T2, T3 > const &rhs)
 
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)
 
template<typename ExprT>
Pixel operator+= (Pixel const &e1, ExprT const &e2)
 Evaluate e1 += e2, and return e1.
 
template<typename ExprT>
Pixel operator-= (Pixel const &e1, ExprT const &e2)
 Evaluate e1 -= e2, and return e1.
 
template<typename ExprT>
Pixel operator*= (Pixel const &e1, ExprT const &e2)
 Evaluate e1 *= e2, and return e1.
 
template<typename ExprT>
Pixel operator/= (Pixel const &e1, ExprT const &e2)
 Evaluate e1 /= e2, and return e1.
 

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 141 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 143 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 144 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 145 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 151 of file Pixel.h.

152 : _image(const_cast<ImagePixelT&>(image)),
153 _mask(const_cast<MaskPixelT&>(mask)),
154 _variance(const_cast<VariancePixelT&>(variance)) {}
MaskPixelT mask() const
Return the mask part of a Pixel.
Definition Pixel.h:207
_VariancePixelT VariancePixelT
Definition Pixel.h:145
ImagePixelT image() const
Return the image part of a Pixel.
Definition Pixel.h:205
VariancePixelT variance() const
Return the variance part of a Pixel.
Definition Pixel.h:209

◆ 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 156 of file Pixel.h.

157 : _image(rhs._image), _mask(rhs._mask), _variance(rhs._variance) {}
A pixel of a MaskedImage.
Definition Pixel.h:141

◆ 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 232 of file Pixel.h.

232 {
233 // Completely arbitrary seed
234 // Convert to double to avoid inconsistently hashing equal numbers of different types
235 return cpputils::hashCombine(17, static_cast<double>(image()), static_cast<double>(mask()),
236 static_cast<double>(variance()));
237 }
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 205 of file Pixel.h.

205{ 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 207 of file Pixel.h.

207{ 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 188 of file Pixel.h.

188 {
189 _image = rhs_image;
190 _mask = 0;
191 _variance = 0;
192
193 return *this;
194 }

◆ 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 197 of file Pixel.h.

197 {
198 _image = rhs_image;
199 _mask = 0;
200 _variance = 0;
201
202 return *this;
203 }

◆ 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 185 of file Pixel.h.

185{ 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 163 of file Pixel.h.

163 { // the following template won't stop the compiler trying to generate
164 // operator=
165 _variance = rhs.variance(); // evaluate before we update image()
166 _image = rhs.image();
167 _mask = rhs.mask();
168
169 return *this;
170 }

◆ 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 177 of file Pixel.h.

177 {
178 _variance = rhs.variance(); // evaluate before we update image()
179 _image = rhs.image();
180 _mask = rhs.mask();
181
182 return *this;
183 }

◆ 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 209 of file Pixel.h.

209{ return _variance; }

Friends And Related Symbol 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 227 of file Pixel.h.

227 {
228 return !(lhs == rhs);
229 }

◆ 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 262 of file Pixel.h.

262 {
263 Pixel tmp(e1); // n.b. shares storage with e1 but gets around "const" (which is required)
266 return tmp;
267 }
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:151

◆ 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 244 of file Pixel.h.

244 {
245 Pixel tmp(e1); // n.b. shares storage with e1 but gets around "const" (which is required)
248 return tmp;
249 }

◆ 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 253 of file Pixel.h.

253 {
254 Pixel tmp(e1); // n.b. shares storage with e1 but gets around "const" (which is required)
257 return tmp;
258 }

◆ 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 271 of file Pixel.h.

271 {
272 Pixel tmp(e1); // n.b. shares storage with e1 but gets around "const" (which is required)
275 return tmp;
276 }

◆ operator== [1/2]

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

Return true if two pixels are equal (in all three of image, mask, and variance) Fix C++20 compilation ambiguous overload problem by creating overloads.

Definition at line 217 of file Pixel.h.

217 {
218 return lhs.image() == rhs.image() && lhs.mask() == rhs.mask() && lhs.variance() == rhs.variance();
219 }

◆ operator== [2/2]

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

Definition at line 221 of file Pixel.h.

221 {
222 return lhs.image() == rhs.image() && lhs.mask() == rhs.mask() && lhs.variance() == rhs.variance();
223 }

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