38#include "boost/timer.hpp"
61template <
typename PixelT>
67 Eigen::MatrixXd M = Eigen::MatrixXd::Zero(rows, cols);
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,
130 convolutionKernel, convolutionControl);
133 *(convolvedMaskedImage.
getImage()) += background;
136 convolvedMaskedImage -= scienceMaskedImage;
140 convolvedMaskedImage *= -1.0;
143 double time = t.elapsed();
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,
181 convolutionKernel, convolutionControl);
184 *(convolvedMaskedImage.
getImage()) += background;
191 *convolvedMaskedImage.
getImage() *= -1.0;
193 convolvedMaskedImage.
getMask()->assign(*scienceMaskedImage.
getMask());
196 double time = t.elapsed();
197 LOGL_DEBUG(
"TRACE4.ip.diffim.convolveAndSubtract",
198 "Total compute time to convolve and subtract : %.2f s", time);
200 return convolvedMaskedImage;
220#define p_INSTANTIATE_convolveAndSubtract(TEMPLATE_IMAGE_T, TYPE) \
222 lsst::afw::image::MaskedImage<TYPE> convolveAndSubtract( \
223 lsst::afw::image::TEMPLATE_IMAGE_T<TYPE> const& templateImage, \
224 lsst::afw::image::MaskedImage<TYPE> const& scienceMaskedImage, \
225 lsst::afw::math::Kernel const& convolutionKernel, \
230 afwImage::MaskedImage<TYPE> convolveAndSubtract( \
231 lsst::afw::image::TEMPLATE_IMAGE_T<TYPE> const& templateImage, \
232 lsst::afw::image::MaskedImage<TYPE> const& scienceMaskedImage, \
233 lsst::afw::math::Kernel const& convolutionKernel, \
234 lsst::afw::math::Function2<double> const& backgroundFunction, \
237#define INSTANTIATE_convolveAndSubtract(TYPE) \
238p_INSTANTIATE_convolveAndSubtract(Image, TYPE) \
239p_INSTANTIATE_convolveAndSubtract(MaskedImage, TYPE)
#define LOGL_DEBUG(logger, message...)
Relationship invert(Relationship r)
#define INSTANTIATE_convolveAndSubtract(TYPE)
lsst::geom::Extent2I getDimensions() const
x_iterator row_begin(int y) const
x_iterator row_end(int y) const
lsst::geom::Extent2I getDimensions() const
VariancePtr getVariance() const
ImagePtr getImage() const
void setDoNormalize(bool doNormalize)
Class to accumulate Mask bits.
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.