generateAlardLuptonBasisList¶
- lsst.ip.diffim.generateAlardLuptonBasisList(config, targetFwhmPix=None, referenceFwhmPix=None, basisDegGauss=None, basisSigmaGauss=None, metadata=None)¶
Generate an Alard-Lupton kernel basis list based upon the Config and the input FWHM of the science and template images.
- Parameters:
- config
lsst.ip.diffim.PsfMatchConfigAL
Configuration object for the Alard-Lupton algorithm.
- targetFwhmPix
float
, optional Fwhm width (pixel) of the template exposure characteristic psf. This is the _target_ that will be matched to the science exposure.
- referenceFwhmPix
float
, optional Fwhm width (pixel) of the science exposure characteristic psf.
- basisDegGauss
list
ofint
, optional Polynomial degree of each Gaussian (sigma) basis. If None, defaults to
config.alardDegGauss
.- basisSigmaGauss
list
ofint
, optional Sigmas of each Gaussian basis. If None, defaults to
config.alardSigGauss
.- metadata
lsst.daf.base.PropertySet
, optional If specified, object to collect metadata fields about the kernel basis list.
- config
- Returns:
- basisList
list
oflsst.afw.math.kernel.FixedKernel
List of basis kernels. For each degree value
n
inconfig.basisDegGauss
(n+2)(n+1)/2 kernels are generated and appended to the list in the order of the polynomial parameter number. Seelsst.afw.math.polynomialFunction2D
documentation for more details.
- basisList
- Raises:
- RuntimeError
if
config.kernelBasisSet
is not equal to “alard-lupton”
- ValueError
if
config.kernelSize
is evenif the number of Gaussians and the number of given sigma values are not equal or
if the number of Gaussians and the number of given polynomial degree values are not equal
Notes
The polynomial functions (
f
) are always evaluated in the -1.0, +1.0 range in both x, y directions, edge to edge, withf(0,0)
evaluated at the kernel center pixel,f(-1.0,-1.0)
at the kernel(0,0)
pixel. They are not scaled by the sigmas of the Gaussians.- Base Gaussian widths (sigmas in pixels) of the kernels are determined as:
If not all fwhm parameters are provided or
config.scaleByFwhm==False
thenbasisSigmaGauss
is used. IfbasisSigmaGauss
is not provided, thenconfig.alardSigGauss
is used. In both cases, the length of sigmas must be equal toconfig.alardNGauss
.If
targetFwhmPix<referenceFwhmPix
(normal convolution): First sigmaSig_K
is determined to satisfy:Sig_reference**2 = Sig_target**2 + Sig_K**2
. If it’s larger thanconfig.alardMinSig * config.alardGaussBeta
, make it the second kernel. Else make it the smallest kernel, unless only 1 kernel is asked for.If
referenceFwhmPix < targetFwhmPix
(deconvolution): Define the progression of Gaussians using a method to derive a deconvolution sum-of-Gaussians from it’s convolution counterpart. [1] Only use 3 since the algorithm assumes 3 components.
Metadata fields
- ALBasisNGauss
int
The number of base Gaussians in the AL basis functions.
- ALBasisDegGauss
list
ofint
Polynomial order of spatial modification of the base Gaussian functions.
- ALBasisSigGauss
list
offloat
Sigmas in pixels of the base Gaussians.
- ALKernelSize
int
Kernel stamp size is (ALKernelSize pix, ALKernelSize pix).
- ALBasisMode
str
, either ofconfig
,convolution
,deconvolution
Indicates whether the config file values, the convolution or deconvolution algorithm was used to determine the base Gaussian sigmas and the kernel stamp size.
References
[1]Ulmer, W.: Inverse problem of linear combinations of Gaussian convolution kernels (deconvolution) and some applications to proton/photon dosimetry and image processing. http://iopscience.iop.org/0266-5611/26/8/085002 Equation 40