29 #ifndef LSST_IMAGE_MASKEDIMAGE_H 30 #define LSST_IMAGE_MASKEDIMAGE_H 38 #include "boost/mpl/at.hpp" 39 #include "boost/iterator/zip_iterator.hpp" 40 #include "boost/tuple/tuple.hpp" 92 template <
typename ImagePT = ImagePixelT,
typename MaskPT = MaskPixelT,
typename VarPT = VariancePixelT>
99 template <
typename,
typename,
typename>
102 template <
typename,
typename,
typename>
105 template <
typename,
typename,
typename>
108 template <
typename,
typename,
typename>
109 class const_MaskedImageLocator;
117 template <
typename ImageIterator,
typename MaskIterator,
typename VarianceIterator,
118 template <
typename>
class Ref =
Reference>
120 typedef boost::tuple<ImageIterator, MaskIterator, VarianceIterator> IMV_iterator_tuple;
126 typedef typename boost::zip_iterator<IMV_iterator_tuple>::reference
IMV_tuple;
130 template <
typename,
typename,
typename>
137 VarianceIterator
const& var)
138 : _iter(
boost::make_zip_iterator(
boost::make_tuple(img, msk, var))) {}
178 return &this->_iter->template get<0>() - &rhs.
_iter->template get<0>();
182 return &this->_iter->template get<0>() == &rhs.
_iter->template get<0>();
186 return &this->_iter->template get<0>() != &rhs.
_iter->template get<0>();
190 return &this->_iter->template get<0>() < &rhs.
_iter->template get<0>();
194 return Pixel(_iter->template get<0>()[0], _iter->template get<1>()[0],
195 _iter->template get<2>()[0]);
204 typename boost::zip_iterator<IMV_iterator_tuple>
_iter;
208 template <
typename ImageIterator,
typename MaskIterator,
typename VarianceIterator>
212 MaskedImageIteratorBase_t;
216 : MaskedImageIteratorBase_t(img, msk, var) {}
227 template <
typename ImageIterator,
typename MaskIterator,
typename VarianceIterator>
230 typename detail::const_iterator_type<MaskIterator>::type,
231 typename detail::const_iterator_type<VarianceIterator>::type,
244 : MaskedImageIteratorBase_t(
245 const_ImageIterator(iter.get_iterator_tuple().template get<0>()),
246 const_MaskIterator(iter.get_iterator_tuple().template get<1>()),
247 const_VarianceIterator(iter.get_iterator_tuple().template get<2>())) {
260 template <
typename ImageLocator,
typename MaskLocator,
typename VarianceLocator,
261 template <
typename>
class Ref =
Reference>
263 typedef typename boost::tuple<ImageLocator, MaskLocator, VarianceLocator> IMVLocator;
269 template <
template <
typename>
class X_OR_Y>
270 class _x_or_y_iterator {
276 X_OR_Y<ImageLocator>(_mil->_loc.template get<0>())() += di;
277 X_OR_Y<MaskLocator>(_mil->_loc.template get<1>())() += di;
278 X_OR_Y<VarianceLocator>(_mil->_loc.template get<2>())() += di;
282 _x_or_y_iterator& operator++() {
284 ++X_OR_Y<ImageLocator>(_mil->_loc.template get<0>())();
285 ++X_OR_Y<MaskLocator>(_mil->_loc.template get<1>())();
286 ++X_OR_Y<VarianceLocator>(_mil->_loc.template get<2>())();
290 bool operator==(_x_or_y_iterator
const& rhs) {
291 return X_OR_Y<ImageLocator>(_mil->_loc.template get<0>())() ==
292 X_OR_Y<ImageLocator>(rhs._mil->_loc.template get<0>())();
294 bool operator!=(_x_or_y_iterator
const& rhs) {
295 return X_OR_Y<ImageLocator>(_mil->_loc.template get<0>())() !=
296 X_OR_Y<ImageLocator>(rhs._mil->_loc.template get<0>())();
298 bool operator<(_x_or_y_iterator
const& rhs) {
299 return X_OR_Y<ImageLocator>(_mil->_loc.template get<0>())() <
300 X_OR_Y<ImageLocator>(rhs._mil->_loc.template get<0>())();
304 return Pixel((*(X_OR_Y<ImageLocator>(_mil->_loc.template get<0>())()))[0],
305 (*(X_OR_Y<MaskLocator>(_mil->_loc.template get<1>())()))[0],
306 (*(X_OR_Y<VarianceLocator>(_mil->_loc.template get<2>())()))[0]);
312 return (*(X_OR_Y<ImageLocator>(_mil->_loc.template get<0>())()))[0];
315 return (*(X_OR_Y<MaskLocator>(_mil->_loc.template get<1>())()))[0];
318 return (*(X_OR_Y<VarianceLocator>(_mil->_loc.template get<2>())()))[0];
326 template <
typename LocT>
328 typedef typename LocT::x_iterator IterT;
331 apply_x(LocT& loc) : _loc(loc) {}
332 IterT& operator()() {
return _loc.x(); }
338 template <
typename LocT>
340 typedef typename LocT::y_iterator IterT;
343 apply_y(LocT& loc) : _loc(loc) {}
344 IterT& operator()() {
return _loc.y(); }
351 typedef typename boost::tuple<
typename ImageLocator::cached_location_t,
352 typename MaskLocator::cached_location_t,
353 typename VarianceLocator::cached_location_t>
364 template <
typename,
typename,
typename>
369 : _imv(loc.template get<0>().cache_location(x, y),
370 loc.template get<1>().cache_location(x, y),
371 loc.template get<2>().cache_location(x, y)) {
379 : _loc(img, msk, var) {
385 return Pixel(_loc.template get<0>().x()[0][0], _loc.template get<1>().
x()[0][0],
386 _loc.template get<2>().
x()[0][0]);
391 return Pixel(_loc.template get<0>()(x, y)[0], _loc.template get<1>()(x, y)[0],
392 _loc.template get<2>()(x, y)[0]);
398 return Pixel(_loc.template get<0>()[cached_loc._imv.template get<0>()][0],
399 _loc.template get<1>()[cached_loc._imv.template get<1>()][0],
400 _loc.template get<2>()[cached_loc._imv.template get<2>()][0]);
406 x_iterator
x() {
return x_iterator(
this); }
412 y_iterator
y() {
return y_iterator(
this); }
415 cached_location_t
cache_location(
int x,
int y)
const {
return cached_location_t(_loc, x, y); }
421 typedef typename boost::mpl::vector<ImagePixelT, MaskPixelT, VariancePixelT>
PixelTVec;
423 template <
typename N>
425 cached_location_t
const& cached_loc) {
426 return _loc.template get<N::value>()[cached_loc._imv.template get<N::value>()][0];
429 template <
typename N>
431 return _loc.template get<N::value>()[0][0];
434 template <
typename N>
436 return _loc.template get<N::value>()(x, y)[0];
443 return apply_IMV<boost::mpl::int_<0>>(cached_loc);
452 return apply_IMV<boost::mpl::int_<1>>(cached_loc);
461 return apply_IMV<boost::mpl::int_<2>>(cached_loc);
467 return apply_IMV<boost::mpl::int_<2>>(
x,
y);
472 return _loc.template get<0>() == rhs.
_loc.template get<0>();
478 return _loc.template get<0>() < rhs.
_loc.template get<0>();
483 return operator+=(detail::difference_type(p.first, p.second));
488 _loc.template get<0>() += p;
489 _loc.template get<1>() += p;
490 _loc.template get<2>() += p;
497 IMVLocator
const&
getLoc()
const {
return _loc; }
504 template <
typename ImageLocator,
typename MaskLocator,
typename VarianceLocator>
510 : MaskedImageLocatorBase_t(img, msk, var) {}
514 template <
typename ImageLocator,
typename MaskLocator,
typename VarianceLocator>
517 typename detail::const_locator_type<MaskLocator>::type,
518 typename detail::const_locator_type<VarianceLocator>::type,
530 : MaskedImageLocatorBase_t(const_ImageLocator(iter.getLoc().template get<0>()),
531 const_MaskLocator(iter.getLoc().template get<1>()),
532 const_VarianceLocator(iter.getLoc().template get<2>())) {
549 #if 0 // doesn't compile. I should fix this, but it's low priority. RHL 599 explicit MaskedImage(
unsigned int width,
unsigned int height,
652 bool conformMasks =
false,
bool needAllHdus =
false,
657 bool allowUnsafe=
false);
680 bool conformMasks =
false,
bool needAllHdus =
false,
685 bool allowUnsafe=
false);
708 bool conformMasks =
false,
bool needAllHdus =
false,
713 bool allowUnsafe=
false);
734 bool const deep =
false);
740 template <
typename OtherPixelT>
745 :
lsst::daf::
base::Citizen(typeid(this)), _image(), _mask(), _variance() {
748 "Only deep copies are permitted for MaskedImages with different pixel types");
751 _image = ImagePtr(
new Image(*rhs.
getImage(), deep));
752 _mask = MaskPtr(
new Mask(*rhs.
getMask(), deep));
753 _variance = VariancePtr(
new Variance(*rhs.
getVariance(), deep));
876 void scaledMinus(
double const c,
MaskedImage const& rhs);
886 void scaledMultiplies(
double const c,
MaskedImage const& rhs);
896 void scaledDivides(
double const c,
MaskedImage const& rhs);
1106 int getX0()
const {
return _image->getX0(); }
1114 int getY0()
const {
return _image->getY0(); }
1144 _image->setXY0(origin);
1148 _mask->setXY0(origin);
1152 _variance->setXY0(origin);
1164 return getImage()->indexToPosition(ind, xy);
1176 return getImage()->positionToIndex(pos, xy);
1203 fast_iterator begin(
bool contiguous)
const;
1212 fast_iterator
end(
bool contiguous)
const;
1222 typename Image::x_iterator imageEnd = getImage()->x_at(x, y);
1223 typename Mask::x_iterator maskEnd = getMask()->x_at(x, y);
1225 #else // bypass checks for non-NULL pointers 1226 typename Image::x_iterator imageEnd = _image->x_at(x, y);
1227 typename Mask::x_iterator maskEnd = _mask->x_at(x, y);
1231 return x_iterator(imageEnd, maskEnd, varianceEnd);
1242 typename Image::y_iterator imageEnd = getImage()->y_at(x, y);
1243 typename Mask::y_iterator maskEnd = getMask()->y_at(x, y);
1245 #else // bypass checks for non-NULL pointers 1246 typename Image::y_iterator imageEnd = _image->y_at(x, y);
1247 typename Mask::y_iterator maskEnd = _mask->y_at(x, y);
1250 return y_iterator(imageEnd, maskEnd, varianceEnd);
1256 typename Image::xy_locator imageEnd = getImage()->xy_at(x, y);
1257 typename Mask::xy_locator maskEnd = getMask()->xy_at(x, y);
1259 #else // bypass checks for non-NULL pointers 1260 typename Image::xy_locator imageEnd = _image->xy_at(x, y);
1261 typename Mask::xy_locator maskEnd = _mask->xy_at(x, y);
1265 return xy_locator(imageEnd, maskEnd, varianceEnd);
1269 void conformSizes();
1273 VariancePtr _variance;
1279 template <
typename ImagePixelT,
typename MaskPixelT,
typename VariancePixelT>
1291 template <
typename ImagePixelT1,
typename ImagePixelT2>
1313 template <
typename ImageT,
typename TagT>
1315 typedef ImageT
type;
1319 template <
typename ImageT>
1321 typedef typename ImageT::Image
type;
1326 template <
typename ImageT>
1327 struct GetImage :
public GetImage_<ImageT, typename ImageT::image_category> {};
1332 #endif // LSST_IMAGE_MASKEDIMAGE_H
VariancePtr getVariance() const
Return a (shared_ptr to) the MaskedImage's variance.
MaskedImageLocatorBase & operator+=(detail::difference_type p)
Increment the locator's x and y positions by p
cached_location_t cache_location(int x, int y) const
Create a cached_location_t offset by (x, y) from locator.
MaskedImageIterator operator+(std::ptrdiff_t delta)
Return a MaskedImageIterator that's delta beyond this.
std::pair< int, double > positionToIndex(double const pos, lsst::afw::image::xOrY const xy) const
Convert image position to index (see Image::positionToIndex)
afw::table::PointKey< int > dimensions
Ref< ImagePixelT >::type image(int x, int y)
Return a reference to the image offset by (x, y) from the current position of the locator...
void scaledPlus(OutImageT &outImage, double c1, InImageT const &inImage1, double c2, InImageT const &inImage2)
Compute the scaled sum of two images.
Ref< ImagePixelT >::type image(cached_location_t const &cached_loc)
Return a reference to the image at the offset set when we created the cached_location_t ...
Ref< MaskPixelT >::type mask()
Return (a reference to) the mask part of the Pixel pointed at by the iterator.
Ref< MaskPixelT >::type mask()
Return a reference to the mask at the current position of the locator.
const_MaskedImageLocator< typename Image::xy_locator, typename Mask::xy_locator, typename Variance::xy_locator > const_xy_locator
A const_locator for a MaskedImage.
y_iterator y()
Return an iterator that can be used to move (or dereference) a locator.
MaskedImageIteratorBase(ImageIterator const &img, MaskIterator const &msk, VarianceIterator const &var)
Construct a MaskedImageIteratorBase from the image/mask/variance iterators.
The base class for MaskedImageLocators (const and non-const)
MaskedImageLocator(ImageLocator &img, MaskLocator &msk, VarianceLocator &var)
MaskedImage & operator-=(lsst::afw::math::Function2< double > const &function)
Ref< typename boost::mpl::at< PixelTVec, N >::type >::type apply_IMV(int x, int y)
boost::mpl::vector< ImagePixelT, MaskPixelT, VariancePixelT > PixelTVec
_view_t::reverse_iterator reverse_iterator
An STL compliant reverse iterator.
std::shared_ptr< image::Mask< MaskPixelT > > MaskPtr
shared pointer to the Mask
const_MaskedImageIterator< typename Image::iterator, typename Mask::iterator, typename Variance::iterator > const_iterator
boost::zip_iterator< IMV_iterator_tuple > _iter
Image< LhsPixelT > & operator+=(Image< LhsPixelT > &lhs, Image< RhsPixelT > const &rhs)
Add lhs to Image rhs (i.e. pixel-by-pixel addition) where types are different.
float Pixel
Typedefs to be used for pixel values.
Pixel type
Type pointed to by the iterator.
A templated class to return this classes' type (present in Image/Mask/MaskedImage) ...
Pixel operator()(int x, int y)
Dereference a locator, returning a Pixel offset by (x, y) from the locator.
lsst::afw::image::pixel::Pixel< ImagePixelT, MaskPixelT, VariancePixelT > Pixel
A Pixel in the MaskedImage.
x_iterator fast_iterator
A fast STL compliant iterator for contiguous images N.b.
const_MaskedImageLocator(MaskedImageLocator< ImageLocator, MaskLocator, VarianceLocator > const &iter)
boost::tuple< typename ImageLocator::cached_location_t, typename MaskLocator::cached_location_t, typename VarianceLocator::cached_location_t > IMVCachedLocation
y_iterator y_at(int x, int y) const
Return an y_iterator at the point (x, y)
std::map< std::string, int > MaskPlaneDict
std::shared_ptr< Image< PixelT > > operator*(Image< PixelT > const &img, ImageSlice< PixelT > const &slc)
Overload operator*()
Pixel operator*()
Dereference a locator, returning a Pixel.
Options for writing an image to FITS.
Ref< VariancePixelT >::type variance(int x, int y)
Return a reference to the variance offset by (x, y) from the current position of the locator...
bool operator==(MaskedImageIteratorBase const &rhs)
Return true if the lhs equals the rhs.
_view_t::x_iterator x_iterator
An iterator for traversing the pixels in a row.
Pixel operator[](cached_location_t const &cached_loc)
Dereference a locator, returning a Pixel offset by the amount set when we created the cached_location...
Ref< typename boost::mpl::at< PixelTVec, N >::type >::type apply_IMV(cached_location_t const &cached_loc)
The base class for MaskedImageIterators (const and non-const)
MaskedImage operator[](lsst::geom::Box2I const &bbox) const
Return a subimage corresponding to the given box (interpreted as PARENT coordinates).
MaskedImageIterator< typename Image::x_iterator, typename Mask::x_iterator, typename Variance::x_iterator > x_iterator
An iterator to a row of a MaskedImage.
Ref< MaskPixelT >::type mask(cached_location_t const &cached_loc)
Return a reference to the mask at the offset set when we created the cached_location_t ...
void setXY0(lsst::geom::Point2I const origin)
Set the MaskedImage's origin.
lsst::afw::image::pixel::SinglePixel< ImagePixelT, MaskPixelT, VariancePixelT > SinglePixel
A single Pixel of the same type as those in the MaskedImage.
A single pixel of the same type as a MaskedImage.
std::shared_ptr< image::Image< VariancePixelT > > VariancePtr
shared pointer to the variance Image
MaskedImageIteratorBase operator++(int)
Increment the iterator (postfix)
MaskedImage & operator-=(lsst::afw::image::Image< ImagePixelT > const &rhs)
cached_location_t(IMVLocator const &loc, int x, int y)
Create a cached_location_t that can be used to access pixels (x, y) away from loc ...
A simple struct that combines the two arguments that must be passed to most cfitsio routines and cont...
lsst::geom::Point2I getXY0() const
Return the image's origin.
lsst::afw::image::Mask< MaskPixelT > Mask
MaskedImageIteratorBase & operator+=(std::ptrdiff_t delta)
Increment the iterator by delta
A Function taking two arguments.
MaskedImage< ImagePixelT, MaskPixelT, VariancePixelT > * makeMaskedImage(typename std::shared_ptr< Image< ImagePixelT >> image, typename std::shared_ptr< Mask< MaskPixelT >> mask=Mask< MaskPixelT >(), typename std::shared_ptr< Image< VariancePixelT >> variance=Image< VariancePixelT >())
A function to return a MaskedImage of the correct type (cf.
x_iterator x_at(int x, int y) const
Return an x_iterator at the point (x, y)
const_MaskedImageIterator & operator+(std::ptrdiff_t delta)
Return a const_MaskedImageIterator that's delta beyond this.
MaskedImageIterator< typename Image::iterator, typename Mask::iterator, typename Variance::iterator > iterator
Ref< VariancePixelT >::type variance()
Return (a reference to) the variance part of the Pixel pointed at by the iterator.
bool operator==(MaskedImageLocatorBase const &rhs)
Return true iff two locators are equal.
Mask< MaskPixelT >::MaskPlaneDict MaskPlaneDict
The Mask's MaskPlaneDict.
lsst::geom::Extent2I getDimensions() const
ImagePtr getImage() const
Return a (shared_ptr to) the MaskedImage's image.
An iterator to the MaskedImage.
MaskedImage & operator/=(lsst::afw::image::Image< ImagePixelT > const &rhs)
bool operator!=(MaskedImageIteratorBase const &rhs)
Return true if the lhs doesn't equal the rhs.
MaskedImage & operator+=(lsst::afw::math::Function2< double > const &function)
_view_t::iterator iterator
An STL compliant iterator.
A locator for the MaskedImage.
double indexToPosition(double ind, lsst::afw::image::xOrY const xy) const
Convert image index to image position (see Image::indexToPosition)
_x_or_y_iterator< apply_x > x_iterator
An x_iterator that provides a view of the xy_locator (i.e. advancing one advances the other) ...
int getHeight() const
Return the number of rows in the image.
MaskedImage(MaskedImage< OtherPixelT, MaskPixelT, VariancePixelT > const &rhs, const bool deep)
generalised copy constructor; defined here in the header so that the compiler can instantiate N(N-1)/...
A base class for image defects.
IMVLocator const & getLoc() const
int getX0() const
Return the image's column-origin.
static MaskedImage readFits(fits::MemFileManager &manager)
Read a MaskedImage from a FITS RAM file.
Represent a 2-dimensional array of bitmask pixels.
MaskedImageIterator< typename Image::y_iterator, typename Mask::y_iterator, typename Variance::y_iterator > y_iterator
An iterator to a column of a MaskedImage.
Lifetime-management for memory that goes into FITS memory files.
const_MaskedImageIterator< typename Image::y_iterator, typename Mask::y_iterator, typename Variance::y_iterator > const_y_iterator
A const_iterator to a column of a MaskedImage.
A traits class for MaskedImage.
_x_or_y_iterator< apply_y > y_iterator
A y_iterator that provides a view of the xy_locator (i.e. advancing one advances the other) ...
const IMV_iterator_tuple get_iterator_tuple() const
Return the underlying iterator tuple.
const Pixel operator*() const
Dereference the iterator, returning a const Pixel.
A class to manipulate images, masks, and variance as a single object.
_view_t::y_iterator y_iterator
An iterator for traversing the pixels in a column.
MaskedImageIterator< typename Image::reverse_iterator, typename Mask::reverse_iterator, typename Variance::reverse_iterator > reverse_iterator
std::shared_ptr< image::Image< ImagePixelT > > ImagePtr
shared pointer to the Image
bool imagesOverlap(ImageBase< T1 > const &image1, ImageBase< T2 > const &image2)
Return true if the pixels for two images or masks overlap in memory.
detail::MaskedImage_tag image_category
boost::zip_iterator< IMV_iterator_tuple >::reference IMV_tuple
The underlying iterator tuple.
Ref< ImagePixelT >::type image()
Return (a reference to) the image part of the Pixel pointed at by the iterator.
A saved relative position, providing efficient access to neighbouring pixels.
std::int32_t MaskPixel
default type for Masks and MaskedImage Masks
Pixel operator*()
Dereference the iterator, returning a Pixel.
void setMask(Mask const &other)
Set the mask plane's pixel values to those of another Mask.
bool operator!=(MaskedImageLocatorBase const &rhs)
Return true iff two locators are not equal.
lsst::afw::image::Image< VariancePixelT > Variance
MaskPtr getMask() const
Return a (shared_ptr to) the MaskedImage's mask.
std::string const compressedFileNoMEF_RE
regexp to identify compressed files that we can't write MEFs to
void swap(Image< PixelT > &a, Image< PixelT > &b)
int getY0() const
Return the image's row-origin.
std::ptrdiff_t operator-(MaskedImageIteratorBase const &rhs)
Return the distance between two iterators.
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
Ref< ImagePixelT >::type image()
Return a reference to the image at the current position of the locator.
x_iterator x()
Return an iterator that can be used to move (or dereference) a locator.
A pixel of a MaskedImage.
MaskedImageIteratorBase & operator++()
Increment the iterator (prefix)
An const iterator to the MaskedImage.
MaskedImage & operator+=(lsst::afw::image::Image< ImagePixelT > const &rhs)
Image< LhsPixelT > & operator*=(Image< LhsPixelT > &lhs, Image< RhsPixelT > const &rhs)
Multiply lhs by Image rhs (i.e. pixel-by-pixel multiplication) where types are different.
std::string const fitsFile_RE
regexp to identify when MaskedImages should be written as MEFs
MaskedImageIterator(ImageIterator &img, MaskIterator &msk, VarianceIterator &var)
MaskedImageIteratorBase & operator-=(std::ptrdiff_t delta)
Decrement the iterator by delta
const_MaskedImageIterator(MaskedImageIterator< ImageIterator, MaskIterator, VarianceIterator > const &iter)
void setXY0(int const x0, int const y0)
Set the MaskedImage's origin.
Image< LhsPixelT > & operator-=(Image< LhsPixelT > &lhs, Image< RhsPixelT > const &rhs)
Subtract lhs from Image rhs (i.e. pixel-by-pixel subtraction) where types are different.
bool operator<(MaskedImageLocatorBase const &rhs)
Return true iff lhs is less than rhs.
Ref< MaskPixelT >::type mask(int x, int y)
Return a reference to the mask offset by (x, y) from the current position of the locator.
void setImage(Image const &other)
Set the image plane's pixel values to those of another Image.
Ref< VariancePixelT >::type variance()
Return a reference to the variance at the current position of the locator.
MaskedImage subset(lsst::geom::Box2I const &bbox, ImageOrigin origin=PARENT) const
Return a subimage corresponding to the given box.
Reports invalid arguments.
void setVariance(Variance const &other)
Set the variance plane's pixel values to those of another Image.
int getWidth() const
Return the number of columns in the image.
MaskedImageLocator< typename Image::xy_locator, typename Mask::xy_locator, typename Variance::xy_locator >::x_iterator xy_x_iterator
an x_iterator associated with an xy_locator
static MaskedImage readFits(std::string const &filename)
Read a MaskedImage from a regular FITS file.
MaskedImage & operator*=(lsst::afw::image::Image< ImagePixelT > const &rhs)
MaskedImage< ImagePT, MaskPT, VarPT > type
Return the desired type.
ItemVariant const * other
Image< LhsPixelT > & operator/=(Image< LhsPixelT > &lhs, Image< RhsPixelT > const &rhs)
Divide lhs by Image rhs (i.e. pixel-by-pixel division) where types are different. ...
lsst::afw::image::Image< ImagePixelT > Image
MaskedImageLocator< typename Image::xy_locator, typename Mask::xy_locator, typename Variance::xy_locator > xy_locator
A locator for a MaskedImage.
MaskedImageLocator< typename Image::xy_locator, typename Mask::xy_locator, typename Variance::xy_locator >::y_iterator xy_y_iterator
an y_iterator associated with an xy_locator
Citizen is a class that should be among all LSST classes base classes, and handles basic memory manag...
bool operator<(MaskedImageIteratorBase const &rhs)
Return true if the lhs is less than the rhs.
Ref< VariancePixelT >::type variance(cached_location_t const &cached_loc)
Return a reference to the variance at the offset set when we created the cached_location_t ...
float VariancePixel
default type for MaskedImage variance images
lsst::geom::Box2I getBBox(ImageOrigin const origin=PARENT) const
A class used to identify classes that represent MaskedImage pixels.
MaskedImageLocatorBase(ImageLocator const &img, MaskLocator const &msk, VarianceLocator const &var)
Construct a MaskedImageLocator from image/mask/variance locators.
_view_t::xy_locator xy_locator
An xy_locator.
An integer coordinate rectangle.
A class to represent a 2-dimensional array of pixels.
MaskedImageLocatorBase & operator+=(pair2I const &p)
Increment the locator's x and y positions by p
const_MaskedImageIterator< typename Image::x_iterator, typename Mask::x_iterator, typename Variance::x_iterator > const_x_iterator
A const_iterator to a row of a MaskedImage.
xy_locator xy_at(int x, int y) const
Return an xy_locator at the point (x, y)
A const locator for the MaskedImage.
metafunction to extract reference type from PixelT
Ref< typename boost::mpl::at< PixelTVec, N >::type >::type apply_IMV()
metafunction to extract const reference type from PixelT