25 #ifndef LSST_AFW_MATH_KERNEL_H 
   26 #define LSST_AFW_MATH_KERNEL_H 
   31 #include <type_traits> 
   35 #include "boost/format.hpp" 
  140     explicit Kernel(
int width, 
int height, 
unsigned int nKernelParams,
 
  207                         double y = 0.0) 
const;
 
  215         _width = dims.getX();
 
  216         _height = dims.getY();
 
  218     inline void setWidth(
int width) { _width = width; }
 
  325             spatialParams.
push_back((*spFuncIter)->getParameters());
 
  327         return spatialParams;
 
  346         if (nParams != params.
size()) {
 
  348                               (
boost::format(
"Number of parameters is wrong, saw %d expected %d") % nParams %
 
  352         for (
unsigned int ii = 0; ii < nParams; ++ii) {
 
  409     struct PersistenceHelper;
 
  456     unsigned int _nKernelParams;
 
  608                         double y = 0.0) 
const;
 
  837     void _setKernelList(
KernelList const &kernelList);
 
  844     bool _isDeltaFunctionBasis;
 
  931                           double x = 0.0, 
double y = 0.0) 
const;
 
  934         unsigned int const ncol = _kernelColFunctionPtr->
getNParameters();
 
  992                                bool doNormalize) 
const;
 
 1010         assert(dim[0] == 
static_cast<int>(_kernelX.
size()));
 
 1011         for (
int i = 0; i != dim.getX(); ++i) {
 
 1012             _kernelX[i] = i - ctr.getX();
 
 1015         assert(dim[1] == 
static_cast<int>(_kernelY.
size()));
 
 1016         for (
int i = 0; i != dim.getY(); ++i) {
 
 1017             _kernelY[i] = i - ctr.getY();
 
table::Key< int > kernelFunction
 
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
 
A kernel described by a function.
 
std::vector< double > getKernelParameters() const override
Return the current kernel parameters.
 
std::string toString(std::string const &prefix="") const override
Return a string representation of the kernel.
 
std::shared_ptr< Kernel > resized(int width, int height) const override
Return a pointer to a clone with specified kernel dimensions.
 
bool isPersistable() const noexcept override
Return true if this particular object can be persisted using afw::table::io.
 
double computeImage(lsst::afw::image::Image< Pixel > &image, bool doNormalize, double x=0.0, double y=0.0) const
Compute an image (pixellized representation of the kernel) in place.
 
AnalyticKernel(AnalyticKernel &&)=delete
 
std::shared_ptr< Kernel > clone() const override
Return a pointer to a deep copy of this kernel.
 
AnalyticKernel & operator=(const AnalyticKernel &)=delete
 
void setKernelParameter(unsigned int ind, double value) const override
Set one kernel parameter.
 
AnalyticKernel(const AnalyticKernel &)=delete
 
virtual KernelFunctionPtr getKernelFunction() const
Get a deep copy of the kernel function.
 
double doComputeImage(lsst::afw::image::Image< Pixel > &image, bool doNormalize) const override
Low-level version of computeImage.
 
void write(OutputArchiveHandle &handle) const override
Write the object to one or more catalogs.
 
KernelFunctionPtr _kernelFunctionPtr
 
AnalyticKernel & operator=(AnalyticKernel &&)=delete
 
std::string getPersistenceName() const override
Return the unique name used to persist this object and look up its factory.
 
AnalyticKernel()
Construct an empty spatially invariant AnalyticKernel of size 0x0.
 
~AnalyticKernel() override=default
 
A kernel that has only one non-zero pixel (of value 1)
 
DeltaFunctionKernel(int width, int height, lsst::geom::Point2I const &point)
Construct a spatially invariant DeltaFunctionKernel.
 
DeltaFunctionKernel & operator=(DeltaFunctionKernel &&)=delete
 
std::shared_ptr< Kernel > resized(int width, int height) const override
Return a pointer to a clone with specified kernel dimensions.
 
~DeltaFunctionKernel() override=default
 
std::shared_ptr< Kernel > clone() const override
Return a pointer to a deep copy of this kernel.
 
double doComputeImage(lsst::afw::image::Image< Pixel > &image, bool doNormalize) const override
Low-level version of computeImage.
 
lsst::geom::Point2I getPixel() const
 
std::string getPersistenceName() const override
Return the unique name used to persist this object and look up its factory.
 
std::string toString(std::string const &prefix="") const override
Return a string representation of the kernel.
 
DeltaFunctionKernel(DeltaFunctionKernel &&)=delete
 
bool isPersistable() const noexcept override
Return true if this particular object can be persisted using afw::table::io.
 
DeltaFunctionKernel(const DeltaFunctionKernel &)=delete
 
DeltaFunctionKernel & operator=(const DeltaFunctionKernel &)=delete
 
void write(OutputArchiveHandle &handle) const override
Write the object to one or more catalogs.
 
A kernel created from an Image.
 
FixedKernel(FixedKernel &&)=delete
 
std::string getPersistenceName() const override
Return the unique name used to persist this object and look up its factory.
 
std::shared_ptr< Kernel > clone() const override
Return a pointer to a deep copy of this kernel.
 
FixedKernel()
Construct an empty FixedKernel of size 0x0.
 
FixedKernel & operator=(FixedKernel &&)=delete
 
double doComputeImage(lsst::afw::image::Image< Pixel > &image, bool doNormalize) const override
Low-level version of computeImage.
 
std::shared_ptr< Kernel > resized(int width, int height) const override
Return a pointer to a clone with specified kernel dimensions.
 
~FixedKernel() override=default
 
bool isPersistable() const noexcept override
Return true if this particular object can be persisted using afw::table::io.
 
virtual Pixel getSum() const
 
std::string toString(std::string const &prefix="") const override
Return a string representation of the kernel.
 
void write(OutputArchiveHandle &handle) const override
Write the object to one or more catalogs.
 
FixedKernel & operator=(const FixedKernel &)=delete
 
FixedKernel(const FixedKernel &)=delete
 
A Function taking one argument.
 
A Function taking two arguments.
 
virtual double getParameter(unsigned int ind) const
Get one function parameter without range checking.
 
unsigned int getNParameters() const noexcept
Return the number of function parameters.
 
Kernels are used for convolution with MaskedImages and (eventually) Images.
 
lsst::geom::Extent2I const getDimensions() const
Return the Kernel's dimensions (width, height)
 
virtual void _setKernelXY()
 
std::vector< SpatialFunctionPtr > _spatialFunctionList
 
Kernel & operator=(const Kernel &)=delete
 
Kernel(const Kernel &)=delete
 
virtual void computeCache(int const)
Compute a cache of Kernel values, if desired.
 
int getHeight() const
Return the Kernel's height.
 
lsst::geom::Point2I getCtr() const
Return index of kernel's center.
 
void setKernelParameters(std::vector< double > const ¶ms)
Set the kernel parameters of a spatially invariant kernel.
 
unsigned int getNKernelParameters() const
Return the number of kernel parameters (0 if none)
 
virtual double getKernelParameter(unsigned int i) const
Return a particular Kernel Parameter (no bounds checking).
 
std::shared_ptr< lsst::afw::math::Function2< double > > SpatialFunctionPtr
 
virtual std::shared_ptr< Kernel > clone() const =0
Return a pointer to a deep copy of this kernel.
 
Kernel & operator=(Kernel &&)=delete
 
int getNSpatialParameters() const
Return the number of spatial parameters (0 if not spatially varying)
 
std::vector< SpatialFunctionPtr > getSpatialFunctionList() const
Return a list of clones of the spatial functions.
 
virtual std::vector< double > getKernelParameters() const
Return the current kernel parameters.
 
~Kernel() override=default
 
virtual std::string toString(std::string const &prefix="") const
Return a string representation of the kernel.
 
lsst::afw::math::NullFunction2< double > NullSpatialFunction
 
void computeKernelParametersFromSpatialModel(std::vector< double > &kernelParams, double x, double y) const
Compute the kernel parameters at a specified point.
 
SpatialFunctionPtr getSpatialFunction(unsigned int index) const
Return a clone of the specified spatial function (one component of the spatial model)
 
void setCtr(lsst::geom::Point2I ctr)
Set index of kernel's center.
 
virtual int getCacheSize() const
Get the current size of the kernel cache (0 if none or if caches not supported)
 
void setKernelParameters(std::pair< double, double > const ¶ms)
Set the kernel parameters of a 2-component spatially invariant kernel.
 
lsst::geom::Box2I shrinkBBox(lsst::geom::Box2I const &bbox) const
Given a bounding box for an image one wishes to convolve with this kernel, return the bounding box fo...
 
virtual std::shared_ptr< Kernel > resized(int width, int height) const =0
Return a pointer to a clone with specified kernel dimensions.
 
std::vector< std::vector< double > > getSpatialParameters() const
Return the spatial parameters parameters (an empty vector if not spatially varying)
 
int getWidth() const
Return the Kernel's width.
 
bool isSpatiallyVarying() const
Return true iff the kernel is spatially varying (has a spatial function)
 
lsst::geom::Box2I growBBox(lsst::geom::Box2I const &bbox) const
Given a bounding box for pixels one wishes to compute by convolving an image with this kernel,...
 
virtual void setKernelParameter(unsigned int ind, double value) const
Set one kernel parameter.
 
void setHeight(int height)
 
void setDimensions(lsst::geom::Extent2I dims)
 
std::string getPythonModule() const override
Return the fully-qualified Python module that should be imported to guarantee that its factory is reg...
 
double computeImage(lsst::afw::image::Image< Pixel > &image, bool doNormalize, double x=0.0, double y=0.0) const
Compute an image (pixellized representation of the kernel) in place.
 
virtual double doComputeImage(lsst::afw::image::Image< Pixel > &image, bool doNormalize) const =0
Low-level version of computeImage.
 
void setSpatialParameters(const std::vector< std::vector< double >> params)
Set the parameters of all spatial functions.
 
Kernel()
Construct a null Kernel of size 0,0.
 
void setKernelParametersFromSpatialModel(double x, double y) const
Set the kernel parameters from the spatial model (if any).
 
lsst::geom::Box2I getBBox() const
return parent bounding box, with XY0 = -center
 
A kernel that is a linear combination of fixed basis kernels.
 
std::string getPersistenceName() const override
Return the unique name used to persist this object and look up its factory.
 
std::shared_ptr< Kernel > resized(int width, int height) const override
Return a pointer to a clone with specified kernel dimensions.
 
bool isPersistable() const noexcept override
Return true if this particular object can be persisted using afw::table::io.
 
std::vector< double > getKernelSumList() const
Get the sum of the pixels of each fixed basis kernel.
 
std::shared_ptr< Kernel > refactor() const
Refactor the kernel as a linear combination of N bases where N is the number of parameters for the sp...
 
virtual KernelList const  & getKernelList() const
Get the fixed basis kernels.
 
void write(OutputArchiveHandle &handle) const override
Write the object to one or more catalogs.
 
LinearCombinationKernel & operator=(const LinearCombinationKernel &)=delete
 
LinearCombinationKernel()
Construct an empty LinearCombinationKernel of size 0x0.
 
std::shared_ptr< Kernel > clone() const override
Return a pointer to a deep copy of this kernel.
 
~LinearCombinationKernel() override=default
 
LinearCombinationKernel & operator=(LinearCombinationKernel &&)=delete
 
void setKernelParameter(unsigned int ind, double value) const override
Set one kernel parameter.
 
void checkKernelList(const KernelList &kernelList) const
Check that all kernels have the same size and center and that none are spatially varying.
 
double doComputeImage(lsst::afw::image::Image< Pixel > &image, bool doNormalize) const override
Low-level version of computeImage.
 
int getNBasisKernels() const
Get the number of basis kernels.
 
std::vector< double > getKernelParameters() const override
Return the current kernel parameters.
 
LinearCombinationKernel(LinearCombinationKernel &&)=delete
 
LinearCombinationKernel(const LinearCombinationKernel &)=delete
 
bool isDeltaFunctionBasis() const
Return true if all basis kernels are instances of DeltaFunctionKernel.
 
std::string toString(std::string const &prefix="") const override
Return a string representation of the kernel.
 
a class used in function calls to indicate that no Function2 is being provided
 
A kernel described by a pair of functions: func(x, y) = colFunc(x) * rowFunc(y)
 
~SeparableKernel() override=default
 
KernelFunctionPtr getKernelRowFunction() const
Get a deep copy of the row kernel function.
 
std::string toString(std::string const &prefix="") const override
Return a string representation of the kernel.
 
std::shared_ptr< Kernel > clone() const override
Return a pointer to a deep copy of this kernel.
 
SeparableKernel(SeparableKernel &&)=delete
 
std::vector< double > getKernelParameters() const override
Return the current kernel parameters.
 
std::shared_ptr< KernelFunction > KernelFunctionPtr
 
double getKernelParameter(unsigned int i) const override
Return a particular Kernel Parameter (no bounds checking).
 
int getCacheSize() const override
Get the current cache size (0 if none)
 
SeparableKernel & operator=(SeparableKernel &&)=delete
 
SeparableKernel & operator=(const SeparableKernel &)=delete
 
double doComputeImage(lsst::afw::image::Image< Pixel > &image, bool doNormalize) const override
Low-level version of computeImage.
 
SeparableKernel(const SeparableKernel &)=delete
 
KernelFunctionPtr getKernelColFunction() const
Get a deep copy of the col kernel function.
 
double computeVectors(std::vector< Pixel > &colList, std::vector< Pixel > &rowList, bool doNormalize, double x=0.0, double y=0.0) const
Compute the column and row arrays in place, where kernel(col, row) = colList(col) * rowList(row)
 
std::shared_ptr< Kernel > resized(int width, int height) const override
Return a pointer to a clone with specified kernel dimensions.
 
virtual void _setKernelXY() override
 
void setKernelParameter(unsigned int ind, double value) const override
Set one kernel parameter.
 
SeparableKernel()
Construct an empty spatially invariant SeparableKernel of size 0x0.
 
void computeCache(int const cacheSize) override
Compute a cache of Kernel values, if desired.
 
A CRTP facade class for subclasses of Persistable.
 
A base class for objects that can be persisted via afw::table::io Archive classes.
 
io::OutputArchiveHandle OutputArchiveHandle
 
An integer coordinate rectangle.
 
Reports invalid arguments.
 
Reports errors that are due to events beyond the control of the program.
 
Backwards-compatibility support for depersisting the old Calib (FluxMag0/FluxMag0Err) objects.
 
Extent< int, 2 > Extent2I
 
def format(config, name=None, writeSourceLine=True, prefix="", verbose=False)
 
A base class for image defects.
 
Kernel has only one non-zero pixel.
 
Tags carrying information about Kernels Kernel with no special properties.
 
table::Key< int > cacheSize