33 #include "boost/format.hpp"
52 bool operator()(T val)
const {
53 return ((val.mask() & _badPixel) == 0) ? true :
false;
62 struct CheckKnownValue {
66 bool operator()(T val)
const {
81 template <
typename ImageT,
typename isVal
idPixel>
82 int copyGoodPixelsImpl(
84 ImageT
const &srcImage,
88 overlapBBox.
clip(srcImage.getBBox());
93 ImageT destView(destImage, overlapBBox, afwImage::PARENT,
false);
94 ImageT srcView(srcImage, overlapBBox, afwImage::PARENT,
false);
96 isValidPixel
const isValid(badPixelMask);
98 for (
int y = 0, endY = srcView.getHeight(); y != endY; ++y) {
99 typename ImageT::const_x_iterator srcIter = srcView.row_begin(y);
100 typename ImageT::const_x_iterator
const srcEndIter = srcView.row_end(y);
101 typename ImageT::x_iterator destIter = destView.row_begin(y);
102 for (; srcIter != srcEndIter; ++srcIter, ++destIter) {
104 *destIter = *srcIter;
115 template <
typename ImagePixelT>
122 return copyGoodPixelsImpl<Image, CheckKnownValue>(destImage, srcImage, 0x0);
125 template <
typename ImagePixelT>
135 return copyGoodPixelsImpl<Image, CheckMask>(destImage, srcImage, badPixelMask);
141 #define MASKEDIMAGE(IMAGEPIXEL) afwImage::MaskedImage<IMAGEPIXEL, \
142 afwImage::MaskPixel, afwImage::VariancePixel>
143 #define INSTANTIATE(IMAGEPIXEL) \
144 template int coaddUtils::copyGoodPixels<IMAGEPIXEL>( \
145 afwImage::Image<IMAGEPIXEL> &destImage, \
146 afwImage::Image<IMAGEPIXEL> const &srcImage \
149 template int coaddUtils::copyGoodPixels<IMAGEPIXEL>( \
150 MASKEDIMAGE(IMAGEPIXEL) &destImage, \
151 MASKEDIMAGE(IMAGEPIXEL) const &srcImage, \
152 afwImage::MaskPixel const badPixelMask \