38 #include "boost/timer.hpp" 62 template <
typename PixelT>
68 Eigen::MatrixXd M = Eigen::MatrixXd::Zero(rows, cols);
86 Eigen::MatrixXi M = Eigen::MatrixXi::Zero(rows, cols);
90 ptr != mask.
row_end(
y); ++ptr, ++x) {
115 template <
typename PixelT,
typename BackgroundT>
120 BackgroundT background,
129 convolutionControl.setDoNormalize(
false);
130 afwMath::convolve(convolvedMaskedImage, templateImage,
131 convolutionKernel, convolutionControl);
134 *(convolvedMaskedImage.getImage()) += background;
137 convolvedMaskedImage -= scienceMaskedImage;
141 convolvedMaskedImage *= -1.0;
144 double time = t.elapsed();
145 LOGL_DEBUG(
"TRACE4.ip.diffim.convolveAndSubtract",
146 "Total compute time to convolve and subtract : %.2f s", time);
148 return convolvedMaskedImage;
166 template <
typename PixelT,
typename BackgroundT>
171 BackgroundT background,
180 convolutionControl.setDoNormalize(
false);
181 afwMath::convolve(*convolvedMaskedImage.getImage(), templateImage,
182 convolutionKernel, convolutionControl);
185 *(convolvedMaskedImage.getImage()) += background;
188 *convolvedMaskedImage.getImage() -= *scienceMaskedImage.
getImage();
192 *convolvedMaskedImage.getImage() *= -1.0;
194 convolvedMaskedImage.getMask()->assign(*scienceMaskedImage.
getMask());
195 convolvedMaskedImage.getVariance()->assign(*scienceMaskedImage.
getVariance());
197 double time = t.elapsed();
198 LOGL_DEBUG(
"TRACE4.ip.diffim.convolveAndSubtract",
199 "Total compute time to convolve and subtract : %.2f s", time);
201 return convolvedMaskedImage;
221 #define p_INSTANTIATE_convolveAndSubtract(TEMPLATE_IMAGE_T, TYPE) \ 223 lsst::afw::image::MaskedImage<TYPE> convolveAndSubtract( \ 224 lsst::afw::image::TEMPLATE_IMAGE_T<TYPE> const& templateImage, \ 225 lsst::afw::image::MaskedImage<TYPE> const& scienceMaskedImage, \ 226 lsst::afw::math::Kernel const& convolutionKernel, \ 231 afwImage::MaskedImage<TYPE> convolveAndSubtract( \ 232 lsst::afw::image::TEMPLATE_IMAGE_T<TYPE> const& templateImage, \ 233 lsst::afw::image::MaskedImage<TYPE> const& scienceMaskedImage, \ 234 lsst::afw::math::Kernel const& convolutionKernel, \ 235 lsst::afw::math::Function2<double> const& backgroundFunction, \ 238 #define INSTANTIATE_convolveAndSubtract(TYPE) \ 239 p_INSTANTIATE_convolveAndSubtract(Image, TYPE) \ 240 p_INSTANTIATE_convolveAndSubtract(MaskedImage, TYPE)
VariancePtr getVariance() const
An include file to include the header files for lsst::ip::diffim.
Eigen::MatrixXi maskToEigenMatrix(lsst::afw::image::Mask< lsst::afw::image::MaskPixel > const &mask)
lsst::afw::image::MaskedImage< PixelT > convolveAndSubtract(lsst::afw::image::MaskedImage< PixelT > const &templateImage, lsst::afw::image::MaskedImage< PixelT > const &scienceMaskedImage, lsst::afw::math::Kernel const &convolutionKernel, BackgroundT background, bool invert=true)
Execute fundamental task of convolving template and subtracting it from science image.
x_iterator row_begin(int y) const
Class to accumulate Mask bits.
lsst::geom::Extent2I getDimensions() const
ImagePtr getImage() const
Eigen::MatrixXd imageToEigenMatrix(lsst::afw::image::Image< PixelT > const &img)
Turns a 2-d Image into a 2-d Eigen Matrix.
Class to calculate difference image statistics.
#define LOGL_DEBUG(logger, message...)
x_iterator row_end(int y) const
#define INSTANTIATE_convolveAndSubtract(TYPE)
lsst::geom::Extent2I getDimensions() const