22__all__ = [
"Warper",
"WarperConfig"]
27from ._math
import warpImage
28from ._math
import WarpingControl
29from ._math
import warpExposure
33 """Compute the bounding box of a warped image.
35 The bounding box includes all warped pixels and it may be a bit oversize.
40 WCS of warped exposure
42 parent bounding box of unwarped image
49 bounding box of warped exposure
53 for inX
in (srcPosBox.getMinX(), srcPosBox.getMaxX()):
54 for inY
in (srcPosBox.getMinY(), srcPosBox.getMaxY()):
55 destPos = destWcs.skyToPixel(srcWcs.pixelToSky(inX, inY))
56 destPosBox.include(destPos)
61_DefaultInterpLength = 10
62_DefaultCacheSize = 1000000
66 warpingKernelName = pexConfig.ChoiceField(
71 "bilinear":
"bilinear interpolation",
72 "lanczos3":
"Lanczos kernel of order 3",
73 "lanczos4":
"Lanczos kernel of order 4",
74 "lanczos5":
"Lanczos kernel of order 5",
77 maskWarpingKernelName = pexConfig.ChoiceField(
79 doc=
"Warping kernel for mask (use ``warpingKernelName`` if '')",
82 "":
"use the regular warping kernel for the mask plane, as well as the image and variance planes",
83 "bilinear":
"bilinear interpolation",
84 "lanczos3":
"Lanczos kernel of order 3",
85 "lanczos4":
"Lanczos kernel of order 4",
86 "lanczos5":
"Lanczos kernel of order 5",
89 interpLength = pexConfig.Field(
91 doc=
"``interpLength`` argument to `lsst.afw.math.warpExposure`",
92 default=_DefaultInterpLength,
94 cacheSize = pexConfig.Field(
96 doc=
"``cacheSize`` argument to `lsst.afw.math.SeparableKernel.computeCache`",
97 default=_DefaultCacheSize,
99 growFullMask = pexConfig.Field(
101 doc=
"mask bits to grow to full width of image/variance kernel,",
102 default=afwImage.Mask.getPlaneBitMask(
"EDGE"),
111 warpingKernelName : `str`
112 see `WarperConfig.warpingKernelName`
113 interpLength : `int`, optional
114 ``interpLength`` argument to `lsst.afw.math.warpExposure`
115 cacheSize : `int`, optional
117 maskWarpingKernelName : `str`, optional
118 name of mask warping kernel (if ``
""`` then use ``warpingKernelName``);
119 see `WarperConfig.maskWarpingKernelName`
120 growFullMask : `int`, optional
121 mask bits to grow to full width of image/variance kernel
123 ConfigClass = WarperConfig
127 interpLength=_DefaultInterpLength,
128 cacheSize=_DefaultCacheSize,
129 maskWarpingKernelName="",
130 growFullMask=afwImage.Mask.getPlaneBitMask(
"EDGE"),):
132 warpingKernelName, maskWarpingKernelName, cacheSize, interpLength, growFullMask)
136 """Create a Warper from a config.
140 config : `WarperConfig`
141 The config to initialize the Warper with.
144 warpingKernelName=config.warpingKernelName,
145 maskWarpingKernelName=config.maskWarpingKernelName,
146 interpLength=config.interpLength,
147 cacheSize=config.cacheSize,
148 growFullMask=config.growFullMask,
152 """Get the warping kernel.
157 """Get the mask warping kernel.
161 def warpExposure(self, destWcs, srcExposure, border=0, maxBBox=None, destBBox=None):
167 WCS of warped exposure
170 border : `int`, optional
171 grow bbox of warped exposure by this amount in all directions
172 (
in pixels);
if negative then the bbox
is shrunk; border
is applied
173 before ``maxBBox``; ignored
if ``destBBox``
is not `
None`
175 maximum allowed parent bbox of warped exposure;
if `
None` then the
176 warped exposure will be just big enough to contain all warped pixels;
177 if provided then the warped exposure may be smaller,
and so
178 missing some warped pixels; ignored
if ``destBBox``
is not `
None`
180 exact parent bbox of warped exposure;
if `
None` then ``border``
and
181 ``maxBBox`` are used to determine the bbox, otherwise ``border``
182 and ``maxBBox`` are ignored
186 destExposure : same type
as ``srcExposure``
191 calls `lsst.afw.math.warpExposure` insted of `~Warper.warpImage` because the former
192 copies attributes such
as ``Calib``,
and that should be done
in one place
198 srcImage=srcExposure.getMaskedImage(),
199 srcWcs=srcExposure.getWcs(),
204 destExposure = srcExposure.Factory(destBBox, destWcs)
208 def warpImage(self, destWcs, srcImage, srcWcs, border=0, maxBBox=None, destBBox=None):
209 """Warp an image or masked image.
216 image or masked image to warp
219 border : `int`, optional
220 grow bbox of warped image by this amount
in all directions
221 (
in pixels);
if negative then the bbox
is shrunk; border
is applied
222 before ``maxBBox``; ignored
if ``destBBox``
is not `
None`
224 maximum allowed parent bbox of warped image;
if `
None` then the
225 warped image will be just big enough to contain all warped pixels;
226 if provided then the warped image may be smaller,
and so
227 missing some warped pixels; ignored
if ``destBBox``
is not `
None`
229 exact parent bbox of warped image;
if `
None` then ``border``
and
230 ``maxBBox`` are used to determine the bbox, otherwise ``border``
231 and ``maxBBox`` are ignored
235 destImage : same type
as ``srcExposure``
236 warped image
or masked image
246 destImage = srcImage.Factory(destBBox)
247 warpImage(destImage, destWcs, srcImage,
251 def _computeDestBBox(self, destWcs, srcImage, srcWcs, border, maxBBox, destBBox):
252 """Process destBBox argument for warpImage and warpExposure.
259 image or masked image to warp
262 border : `int`, optional
263 grow bbox of warped image by this amount
in all directions
264 (
in pixels);
if negative then the bbox
is shrunk; border
is applied
265 before ``maxBBox``; ignored
if ``destBBox``
is not `
None`
267 maximum allowed parent bbox of warped image;
if `
None` then the
268 warped image will be just big enough to contain all warped pixels;
269 if provided then the warped image may be smaller,
and so
270 missing some warped pixels; ignored
if ``destBBox``
is not `
None`
272 exact parent bbox of warped image;
if `
None` then ``border``
and
273 ``maxBBox`` are used to determine the bbox, otherwise ``border``
274 and ``maxBBox`` are ignored
278 destWcs, srcImage.getBBox(afwImage.PARENT), srcWcs)
280 destBBox.grow(border)
281 if maxBBox
is not None:
282 destBBox.clip(maxBBox)
A 2-dimensional celestial WCS that transform pixels to ICRS RA/Dec, using the LSST standard for pixel...
def _computeDestBBox(self, destWcs, srcImage, srcWcs, border, maxBBox, destBBox)
def getWarpingKernel(self)
def getMaskWarpingKernel(self)
def fromConfig(cls, config)
def __init__(self, warpingKernelName, interpLength=_DefaultInterpLength, cacheSize=_DefaultCacheSize, maskWarpingKernelName="", growFullMask=afwImage.Mask.getPlaneBitMask("EDGE"))
A floating-point coordinate rectangle geometry.
An integer coordinate rectangle.
A Psf class that maps an arbitrary Psf through a coordinate transformation.
def computeWarpedBBox(destWcs, srcBBox, srcWcs)