38#include "boost/timer/timer.hpp"
61template <
typename PixelT>
67 Eigen::MatrixXd M = Eigen::MatrixXd::Zero(rows, cols);
68 for (
int y = 0; y != img.
getHeight(); ++y) {
71 ptr != img.
row_end(y); ++ptr, ++x) {
83 unsigned int rows =
mask.getHeight();
84 unsigned int cols =
mask.getWidth();
85 Eigen::MatrixXi M = Eigen::MatrixXi::Zero(rows, cols);
86 for (
int y = 0; y !=
mask.getHeight(); ++y) {
89 ptr !=
mask.row_end(y); ++ptr, ++x) {
114template <
typename PixelT,
typename BackgroundT>
119 BackgroundT background,
123 boost::timer::cpu_timer t;
129 convolutionKernel, convolutionControl);
132 *(convolvedMaskedImage.
getImage()) += background;
135 convolvedMaskedImage -= scienceMaskedImage;
139 convolvedMaskedImage *= -1.0;
143 double time = 1e-9 * t.elapsed().wall;
144 LOGL_DEBUG(
"TRACE4.ip.diffim.convolveAndSubtract",
145 "Total compute time to convolve and subtract : %.2f s", time);
147 return convolvedMaskedImage;
165template <
typename PixelT,
typename BackgroundT>
170 BackgroundT background,
174 boost::timer::cpu_timer t;
180 convolutionKernel, convolutionControl);
183 *(convolvedMaskedImage.
getImage()) += background;
190 *convolvedMaskedImage.
getImage() *= -1.0;
196 double time = 1e-9 * t.elapsed().wall;
197 LOGL_DEBUG(
"TRACE4.ip.diffim.convolveAndSubtract",
198 "Total compute time to convolve and subtract : %.2f s", time);
200 return convolvedMaskedImage;
219#define p_INSTANTIATE_convolveAndSubtract(TEMPLATE_IMAGE_T, TYPE) \
221 lsst::afw::image::MaskedImage<TYPE> convolveAndSubtract( \
222 lsst::afw::image::TEMPLATE_IMAGE_T<TYPE> const& templateImage, \
223 lsst::afw::image::MaskedImage<TYPE> const& scienceMaskedImage, \
224 lsst::afw::math::Kernel const& convolutionKernel, \
229 afwImage::MaskedImage<TYPE> convolveAndSubtract( \
230 lsst::afw::image::TEMPLATE_IMAGE_T<TYPE> const& templateImage, \
231 lsst::afw::image::MaskedImage<TYPE> const& scienceMaskedImage, \
232 lsst::afw::math::Kernel const& convolutionKernel, \
233 lsst::afw::math::Function2<double> const& backgroundFunction, \
236#define INSTANTIATE_convolveAndSubtract(TYPE) \
237p_INSTANTIATE_convolveAndSubtract(Image, TYPE) \
238p_INSTANTIATE_convolveAndSubtract(MaskedImage, TYPE)
#define LOGL_DEBUG(logger, message...)
#define INSTANTIATE_convolveAndSubtract(TYPE)
lsst::geom::Extent2I getDimensions() const
void assign(ImageBase const &rhs, lsst::geom::Box2I const &bbox=lsst::geom::Box2I(), ImageOrigin origin=PARENT)
x_iterator row_begin(int y) const
x_iterator row_end(int y) const
typename _view_t::x_iterator x_iterator
lsst::geom::Extent2I getDimensions() const
VariancePtr getVariance() const
ImagePtr getImage() const
void setDoNormalize(bool doNormalize)
Class to calculate difference image statistics.
An include file to include the header files for lsst::ip::diffim.
void convolve(OutImageT &convolvedImage, InImageT const &inImage, KernelT const &kernel, ConvolutionControl const &convolutionControl=ConvolutionControl())
Eigen::MatrixXd imageToEigenMatrix(lsst::afw::image::Image< PixelT > const &img)
Turns a 2-d Image into a 2-d Eigen Matrix.
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.