LSST Applications g0f08755f38+9c285cab97,g1635faa6d4+13f3999e92,g1653933729+a8ce1bb630,g1a0ca8cf93+bf6eb00ceb,g28da252d5a+0829b12dee,g29321ee8c0+5700dc9eac,g2bbee38e9b+9634bc57db,g2bc492864f+9634bc57db,g2cdde0e794+c2c89b37c4,g3156d2b45e+41e33cbcdc,g347aa1857d+9634bc57db,g35bb328faa+a8ce1bb630,g3a166c0a6a+9634bc57db,g3e281a1b8c+9f2c4e2fc3,g414038480c+077ccc18e7,g41af890bb2+fde0dd39b6,g5fbc88fb19+17cd334064,g781aacb6e4+a8ce1bb630,g80478fca09+55a9465950,g82479be7b0+d730eedb7d,g858d7b2824+9c285cab97,g9125e01d80+a8ce1bb630,g9726552aa6+10f999ec6a,ga5288a1d22+2a84bb7594,gacf8899fa4+c69c5206e8,gae0086650b+a8ce1bb630,gb58c049af0+d64f4d3760,gc28159a63d+9634bc57db,gcf0d15dbbd+4b7d09cae4,gda3e153d99+9c285cab97,gda6a2b7d83+4b7d09cae4,gdaeeff99f8+1711a396fd,ge2409df99d+5e831397f4,ge79ae78c31+9634bc57db,gf0baf85859+147a0692ba,gf3967379c6+41c94011de,gf3fb38a9a8+8f07a9901b,gfb92a5be7c+9c285cab97,w.2024.46
LSST Data Management Base Package
Loading...
Searching...
No Matches
Classes | Typedefs | Functions | Variables
lsst::afw::image::pixel Namespace Reference

Classes

class  BinaryExpr
 Class for representing binary operations. More...
 
class  BinaryExpr< ExprT1, double, ImageBinOp, MaskBinOp, VarianceBinOp >
 Partial specialization of BinaryExpr when ExprT2 is a double (i.e no mask/variance part) More...
 
struct  bitwise_or
 bitwise_or doesn't seem to be in std:: More...
 
struct  exprTraits
 A traits class to return the types of the image/mask/variance. More...
 
struct  exprTraits< double >
 A specialisation of exprTraits for double More...
 
struct  exprTraits< float >
 A specialisation of exprTraits for float More...
 
struct  exprTraits< int >
 A specialisation of exprTraits for int More...
 
struct  exprTraits< unsigned short >
 A specialisation of exprTraits for unsigned short More...
 
struct  is_specialization
 Template for (e1 + e2) More...
 
struct  is_specialization< Template< Args... >, Template >
 
struct  noop
 A noop functor (useful for e.g. masks and variances when changing the sign of the image) More...
 
class  Pixel
 A pixel of a MaskedImage. More...
 
struct  PixelTypeTraits
 Pixel type traits. More...
 
class  SinglePixel
 A single pixel of the same type as a MaskedImage. More...
 
class  UnaryExpr
 Class for representing Unary operations. More...
 
struct  variance_divides
 Calculate the variance when we divide two Pixels. More...
 
struct  variance_multiplies
 Calculate the variance when we multiply two Pixels. More...
 
struct  variance_plus
 Calculate the variance when we add (or subtract) two Pixels. More...
 

Typedefs

template<typename T1 , typename T2 >
using valid_operands = std::enable_if_t<valid_binary_operands<T1, T2>>
 

Functions

template<typename ImagePixelT , typename MaskPixelT , typename VariancePixelT >
SinglePixel< ImagePixelT, MaskPixelT, VariancePixelT > makeSinglePixel (ImagePixelT x, MaskPixelT m, VariancePixelT v)
 Return a SinglePixel.
 
template<typename ExprT1 >
auto operator- (ExprT1 e1)
 Template for -e1.
 
template<typename ExprT1 , typename ExprT2 , typename = valid_operands<ExprT1, ExprT2>>
auto operator+ (ExprT1 e1, ExprT2 e2)
 
template<typename ExprT1 , typename ExprT2 , typename = valid_operands<ExprT1, ExprT2>>
ExprT1 & operator+= (ExprT1 &e1, ExprT2 const &e2)
 template for e1 += e2
 
template<typename ExprT1 , typename ExprT2 , typename = valid_operands<ExprT1, ExprT2>>
ExprT1 plus (ExprT1 &lhs, ExprT2 const &rhs, float covariance)
 Like operator+(), but assume that covariance's 2*alpha*sqrt(vx*vy)
 
template<typename ExprT1 , typename ExprT2 , typename = valid_operands<ExprT1, ExprT2>>
BinaryExpr< ExprT1, ExprT2, std::minus< typename exprTraits< ExprT1 >::ImagePixelT >, bitwise_or< typename exprTraits< ExprT1 >::MaskPixelT >, variance_plus< typename exprTraits< ExprT1 >::VariancePixelT > > operator- (ExprT1 e1, ExprT2 e2)
 Template to evaluate (e1 - e2)
 
template<typename ExprT1 , typename ExprT2 , typename = valid_operands<ExprT1, ExprT2>>
ExprT1 operator-= (ExprT1 &e1, ExprT2 e2)
 Template to evaluate e1 -= e2.
 
template<typename ExprT1 , typename ExprT2 , typename = valid_operands<ExprT1, ExprT2>>
BinaryExpr< ExprT1, ExprT2, std::multiplies< typename exprTraits< ExprT1 >::ImagePixelT >, bitwise_or< typename exprTraits< ExprT1 >::MaskPixelT >, variance_multiplies< typename exprTraits< ExprT1 >::VariancePixelT > > operator* (ExprT1 e1, ExprT2 e2)
 Template to evaluate (e1 * e2)
 
template<typename ExprT1 , typename ExprT2 , typename = valid_operands<ExprT1, ExprT2>>
ExprT1 operator*= (ExprT1 &e1, ExprT2 e2)
 Template to evaluate e1 *= e2.
 
template<typename ExprT1 , typename ExprT2 , typename = valid_operands<ExprT1, ExprT2>>
BinaryExpr< ExprT1, ExprT2, std::divides< typename exprTraits< ExprT1 >::ImagePixelT >, bitwise_or< typename exprTraits< ExprT1 >::MaskPixelT >, variance_divides< typename exprTraits< ExprT1 >::VariancePixelT > > operator/ (ExprT1 e1, ExprT2 e2)
 Template to evaluate (e1 / e2)
 
template<typename ExprT1 , typename ExprT2 , typename = valid_operands<ExprT1, ExprT2>>
ExprT1 operator/= (ExprT1 &e1, ExprT2 e2)
 Template to evaluate e1 /= e2.
 
template<typename ImagePixelT , typename MaskPixelT , typename VariancePixelT >
std::ostreamoperator<< (std::ostream &os, SinglePixel< ImagePixelT, MaskPixelT, VariancePixelT > const &v)
 Print a SinglePixel.
 
template<typename ImagePixelT , typename MaskPixelT , typename VariancePixelT >
std::ostreamoperator<< (std::ostream &os, Pixel< ImagePixelT, MaskPixelT, VariancePixelT > const &v)
 Print a Pixel.
 
template<typename ExprT1 , typename ExprT2 , typename BinOp , typename MaskBinOp , typename VarBinOp >
std::ostreamoperator<< (std::ostream &os, BinaryExpr< ExprT1, ExprT2, BinOp, MaskBinOp, VarBinOp > const &v)
 Evaluate and print a BinaryExpr.
 
 PYBIND11_MODULE (_pixel, mod)
 

Variables

template<typename T >
constexpr bool is_valid_operand
 
template<typename T1 , typename T2 >
constexpr bool valid_binary_operands = is_valid_operand<T1> && is_valid_operand<T2>
 

Typedef Documentation

◆ valid_operands

template<typename T1 , typename T2 >
using lsst::afw::image::pixel::valid_operands = std::enable_if_t<valid_binary_operands<T1, T2>>

Definition at line 518 of file Pixel.h.

Function Documentation

◆ makeSinglePixel()

template<typename ImagePixelT , typename MaskPixelT , typename VariancePixelT >
SinglePixel< ImagePixelT, MaskPixelT, VariancePixelT > lsst::afw::image::pixel::makeSinglePixel ( ImagePixelT x,
MaskPixelT m,
VariancePixelT v )

Return a SinglePixel.

This function is useful as function overloading will choose the correct return type (cf. std::make_pair()

Definition at line 134 of file Pixel.h.

135 {
137}
int m
Definition SpanSet.cc:48
A single pixel of the same type as a MaskedImage.
Definition Pixel.h:73

◆ operator*()

template<typename ExprT1 , typename ExprT2 , typename = valid_operands<ExprT1, ExprT2>>
BinaryExpr< ExprT1, ExprT2, std::multiplies< typename exprTraits< ExprT1 >::ImagePixelT >, bitwise_or< typename exprTraits< ExprT1 >::MaskPixelT >, variance_multiplies< typename exprTraits< ExprT1 >::VariancePixelT > > lsst::afw::image::pixel::operator* ( ExprT1 e1,
ExprT2 e2 )

Template to evaluate (e1 * e2)

Definition at line 584 of file Pixel.h.

◆ operator*=()

template<typename ExprT1 , typename ExprT2 , typename = valid_operands<ExprT1, ExprT2>>
ExprT1 lsst::afw::image::pixel::operator*= ( ExprT1 & e1,
ExprT2 e2 )

◆ operator+()

template<typename ExprT1 , typename ExprT2 , typename = valid_operands<ExprT1, ExprT2>>
auto lsst::afw::image::pixel::operator+ ( ExprT1 e1,
ExprT2 e2 )

◆ operator+=()

template<typename ExprT1 , typename ExprT2 , typename = valid_operands<ExprT1, ExprT2>>
ExprT1 & lsst::afw::image::pixel::operator+= ( ExprT1 & e1,
ExprT2 const & e2 )

◆ operator-() [1/2]

template<typename ExprT1 >
auto lsst::afw::image::pixel::operator- ( ExprT1 e1)

Template for -e1.

Definition at line 494 of file Pixel.h.

494 {
498}
Class for representing Unary operations.
Definition Pixel.h:393
A noop functor (useful for e.g. masks and variances when changing the sign of the image)
Definition Pixel.h:331

◆ operator-() [2/2]

template<typename ExprT1 , typename ExprT2 , typename = valid_operands<ExprT1, ExprT2>>
BinaryExpr< ExprT1, ExprT2, std::minus< typename exprTraits< ExprT1 >::ImagePixelT >, bitwise_or< typename exprTraits< ExprT1 >::MaskPixelT >, variance_plus< typename exprTraits< ExprT1 >::VariancePixelT > > lsst::afw::image::pixel::operator- ( ExprT1 e1,
ExprT2 e2 )

◆ operator-=()

template<typename ExprT1 , typename ExprT2 , typename = valid_operands<ExprT1, ExprT2>>
ExprT1 lsst::afw::image::pixel::operator-= ( ExprT1 & e1,
ExprT2 e2 )

◆ operator/()

template<typename ExprT1 , typename ExprT2 , typename = valid_operands<ExprT1, ExprT2>>
BinaryExpr< ExprT1, ExprT2, std::divides< typename exprTraits< ExprT1 >::ImagePixelT >, bitwise_or< typename exprTraits< ExprT1 >::MaskPixelT >, variance_divides< typename exprTraits< ExprT1 >::VariancePixelT > > lsst::afw::image::pixel::operator/ ( ExprT1 e1,
ExprT2 e2 )

Template to evaluate (e1 / e2)

Definition at line 605 of file Pixel.h.

◆ operator/=()

template<typename ExprT1 , typename ExprT2 , typename = valid_operands<ExprT1, ExprT2>>
ExprT1 lsst::afw::image::pixel::operator/= ( ExprT1 & e1,
ExprT2 e2 )

◆ operator<<() [1/3]

template<typename ExprT1 , typename ExprT2 , typename BinOp , typename MaskBinOp , typename VarBinOp >
std::ostream & lsst::afw::image::pixel::operator<< ( std::ostream & os,
BinaryExpr< ExprT1, ExprT2, BinOp, MaskBinOp, VarBinOp > const & v )

Evaluate and print a BinaryExpr.

Definition at line 634 of file Pixel.h.

634 {
635 return os << "(" << v.image() << ", " << v.mask() << ", " << v.variance() << ")";
636}
ImagePixelT image() const
evaluate the image part of the expression
Definition Pixel.h:437
VariancePixelT variance() const
evaluate the variance part of the expression
Definition Pixel.h:443
MaskPixelT mask() const
evaluate the mask part of the expression
Definition Pixel.h:440

◆ operator<<() [2/3]

template<typename ImagePixelT , typename MaskPixelT , typename VariancePixelT >
std::ostream & lsst::afw::image::pixel::operator<< ( std::ostream & os,
Pixel< ImagePixelT, MaskPixelT, VariancePixelT > const & v )

Print a Pixel.

Definition at line 628 of file Pixel.h.

628 {
629 return os << "(" << v.image() << ", " << v.mask() << ", " << v.variance() << ")";
630}
MaskPixelT mask() const
Return the mask part of a Pixel.
Definition Pixel.h:207
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

◆ operator<<() [3/3]

template<typename ImagePixelT , typename MaskPixelT , typename VariancePixelT >
std::ostream & lsst::afw::image::pixel::operator<< ( std::ostream & os,
SinglePixel< ImagePixelT, MaskPixelT, VariancePixelT > const & v )

Print a SinglePixel.

Definition at line 622 of file Pixel.h.

622 {
623 return os << "(" << v.image() << ", " << v.mask() << ", " << v.variance() << ")";
624}
VariancePixelT variance() const
Definition Pixel.h:96
ImagePixelT image() const
Definition Pixel.h:94

◆ plus()

template<typename ExprT1 , typename ExprT2 , typename = valid_operands<ExprT1, ExprT2>>
ExprT1 lsst::afw::image::pixel::plus ( ExprT1 & lhs,
ExprT2 const & rhs,
float covariance )
inline

Like operator+(), but assume that covariance's 2*alpha*sqrt(vx*vy)

Parameters
lhsLeft hand value
rhsRight hand value
covarianceAssume that covariance is 2*alpha*sqrt(vx*vy) (if variances are known)

Definition at line 549 of file Pixel.h.

553 {
554 return doPlus(lhs, rhs, covariance, typename std::is_arithmetic<ExprT1>::type());
555}
MatrixQ covariance

◆ PYBIND11_MODULE()

lsst::afw::image::pixel::PYBIND11_MODULE ( _pixel ,
mod  )

Definition at line 65 of file _pixel.cc.

65 {
66 lsst::cpputils::python::WrapperCollection wrappers(mod, "lsst.afw.image.pixel");
67 declareSinglePixel<float>(wrappers, "SinglePixelF");
68 declareSinglePixel<double>(wrappers, "SinglePixelD");
69 declareSinglePixel<int>(wrappers, "SinglePixelI");
70 declareSinglePixel<std::uint16_t>(wrappers, "SinglePixelU");
71 declareSinglePixel<std::uint64_t>(wrappers, "SinglePixelL");
72 wrappers.finish();
73}
A helper class for subdividing pybind11 module across multiple translation units (i....
Definition python.h:242

Variable Documentation

◆ is_valid_operand

template<typename T >
constexpr bool lsst::afw::image::pixel::is_valid_operand
inlineconstexpr
Initial value:
std::is_floating_point_v<T> ||
is_specialization<T, BinaryExpr>{} ||
is_specialization<T, Pixel>{}

Definition at line 509 of file Pixel.h.

511 {} ||
512 is_specialization<T, SinglePixel>{} ||
513 is_specialization<T, Pixel>{};

◆ valid_binary_operands

template<typename T1 , typename T2 >
constexpr bool lsst::afw::image::pixel::valid_binary_operands = is_valid_operand<T1> && is_valid_operand<T2>
constexpr

Definition at line 515 of file Pixel.h.