39 template <
typename CoaddPixelT,
typename WeightPixelT>
51 if (coadd.getBBox() != weightMap.
getBBox()) {
53 (boost::format(
"coadd and weightMap parent bboxes differ: %s != %s") %
54 coadd.getBBox() % weightMap.
getBBox())
58 afwGeom::Box2I overlapBBox = coadd.getBBox();
59 overlapBBox.clip(
image.getBBox());
60 if (overlapBBox.isEmpty()) {
64 Coadd coaddView(coadd, overlapBBox, afwImage::PARENT,
false);
65 WeightMap weightMapView(weightMap, overlapBBox, afwImage::PARENT,
false);
66 Coadd imageView(image, overlapBBox, afwImage::PARENT,
false);
68 for (
int y = 0, endY = imageView.getHeight();
y != endY; ++
y) {
69 typename Coadd::const_x_iterator imageIter = imageView.row_begin(y);
70 typename Coadd::const_x_iterator
const imageEndIter = imageView.row_end(y);
71 typename Coadd::x_iterator coaddIter = coaddView.row_begin(y);
72 typename WeightMap::x_iterator weightMapIter = weightMapView.row_begin(y);
73 for (; imageIter != imageEndIter; ++imageIter, ++coaddIter, ++weightMapIter) {
74 if ((imageIter.mask() & badPixelMask) == 0) {
75 CoaddPixelT value = imageIter.image() * imageIter.image() / imageIter.variance();
76 coaddIter.image() += value;
77 coaddIter.mask() |= imageIter.mask();
78 *weightMapIter += weight;
89 #define MASKEDIMAGE(IMAGEPIXEL) \ 90 afwImage::MaskedImage<IMAGEPIXEL, afwImage::MaskPixel, afwImage::VariancePixel> 91 #define INSTANTIATE(COADDPIXEL, WEIGHTPIXEL) \ 92 template afwGeom::Box2I coaddChiSq::addToCoadd<COADDPIXEL, WEIGHTPIXEL>( \ 93 MASKEDIMAGE(COADDPIXEL) & coadd, afwImage::Image<WEIGHTPIXEL> & weightMap, \ 94 MASKEDIMAGE(COADDPIXEL) const &image, afwImage::MaskPixel const badPixelMask, \
lsst::afw::geom::Box2I addToCoadd(lsst::afw::image::MaskedImage< CoaddPixelT, lsst::afw::image::MaskPixel, lsst::afw::image::VariancePixel > &coadd, lsst::afw::image::Image< WeightPixelT > &weightMap, lsst::afw::image::MaskedImage< CoaddPixelT, lsst::afw::image::MaskPixel, lsst::afw::image::VariancePixel > const &maskedImage, lsst::afw::image::MaskPixel const badPixelMask, WeightPixelT weight)
add good pixels from a masked image to a coadd and associated weight map using the chi squared algori...
lsst::geom::Box2I getBBox(ImageOrigin origin=PARENT) const
#define INSTANTIATE(FROMSYS, TOSYS)
#define LSST_EXCEPT(type,...)