LSST Applications  21.0.0-172-gfb10e10a+18fedfabac,22.0.0+297cba6710,22.0.0+80564b0ff1,22.0.0+8d77f4f51a,22.0.0+a28f4c53b1,22.0.0+dcf3732eb2,22.0.1-1-g7d6de66+2a20fdde0d,22.0.1-1-g8e32f31+297cba6710,22.0.1-1-geca5380+7fa3b7d9b6,22.0.1-12-g44dc1dc+2a20fdde0d,22.0.1-15-g6a90155+515f58c32b,22.0.1-16-g9282f48+790f5f2caa,22.0.1-2-g92698f7+dcf3732eb2,22.0.1-2-ga9b0f51+7fa3b7d9b6,22.0.1-2-gd1925c9+bf4f0e694f,22.0.1-24-g1ad7a390+a9625a72a8,22.0.1-25-g5bf6245+3ad8ecd50b,22.0.1-25-gb120d7b+8b5510f75f,22.0.1-27-g97737f7+2a20fdde0d,22.0.1-32-gf62ce7b1+aa4237961e,22.0.1-4-g0b3f228+2a20fdde0d,22.0.1-4-g243d05b+871c1b8305,22.0.1-4-g3a563be+32dcf1063f,22.0.1-4-g44f2e3d+9e4ab0f4fa,22.0.1-42-gca6935d93+ba5e5ca3eb,22.0.1-5-g15c806e+85460ae5f3,22.0.1-5-g58711c4+611d128589,22.0.1-5-g75bb458+99c117b92f,22.0.1-6-g1c63a23+7fa3b7d9b6,22.0.1-6-g50866e6+84ff5a128b,22.0.1-6-g8d3140d+720564cf76,22.0.1-6-gd805d02+cc5644f571,22.0.1-8-ge5750ce+85460ae5f3,master-g6e05de7fdc+babf819c66,master-g99da0e417a+8d77f4f51a,w.2021.48
LSST Data Management Base Package
Public Member Functions | Static Public Attributes | List of all members
lsst.pipe.tasks.interpImage.InterpImageTask Class Reference
Inheritance diagram for lsst.pipe.tasks.interpImage.InterpImageTask:

Public Member Functions

def run (self, image, planeName=None, fwhmPixels=None, defects=None)
 Interpolate in place over pixels in a maskedImage marked as bad. More...
 
def transposeContext (self, maskedImage, defects)
 
def interpolateImage (self, maskedImage, psf, defectList, fallbackValue)
 

Static Public Attributes

 ConfigClass = InterpImageConfig
 

Detailed Description

Interpolate over bad image pixels

Definition at line 80 of file interpImage.py.

Member Function Documentation

◆ interpolateImage()

def lsst.pipe.tasks.interpImage.InterpImageTask.interpolateImage (   self,
  maskedImage,
  psf,
  defectList,
  fallbackValue 
)
Interpolate over defects in an image

Parameters
----------
maskedImage : `lsst.afw.image.MaskedImage`
    Image on which to perform interpolation.
psf : `lsst.afw.detection.Psf`
    Point-spread function; currently unused.
defectList : `lsst.meas.algorithms.Defects`
    List of defects to interpolate over.
fallbackValue : `float`
    Value to set when interpolation fails.

Definition at line 229 of file interpImage.py.

229  def interpolateImage(self, maskedImage, psf, defectList, fallbackValue):
230  """Interpolate over defects in an image
231 
232  Parameters
233  ----------
234  maskedImage : `lsst.afw.image.MaskedImage`
235  Image on which to perform interpolation.
236  psf : `lsst.afw.detection.Psf`
237  Point-spread function; currently unused.
238  defectList : `lsst.meas.algorithms.Defects`
239  List of defects to interpolate over.
240  fallbackValue : `float`
241  Value to set when interpolation fails.
242  """
243  if not defectList:
244  return
245  with self.transposeContext(maskedImage, defectList) as (image, defects):
246  measAlg.interpolateOverDefects(image, psf, defects, fallbackValue,
247  self.config.useFallbackValueAtEdge)

◆ run()

def lsst.pipe.tasks.interpImage.InterpImageTask.run (   self,
  image,
  planeName = None,
  fwhmPixels = None,
  defects = None 
)

Interpolate in place over pixels in a maskedImage marked as bad.

    Pixels to be interpolated are set by either a mask planeName provided
    by the caller OR a defects list of type `~lsst.meas.algorithms.Defects`
    If both are provided an exception is raised.

    Note that the interpolation code in meas_algorithms currently doesn't
    use the input PSF (though it's a required argument), so it's not
    important to set the input PSF parameters exactly.  This PSF is set
    here as the psf attached to the "image" (i.e if the image passed in
    is an Exposure).  Otherwise, a psf model is created using
    measAlg.GaussianPsfFactory with the value of fwhmPixels (the value
    passed in by the caller, or the default defaultFwhm set in
    measAlg.GaussianPsfFactory if None).

    @param[in,out] image       MaskedImage OR Exposure to be interpolated
    @param[in]     planeName   name of mask plane over which to interpolate
                               If None, must provide a defects list.
    @param[in]     fwhmPixels  FWHM of core star (pixels)
                               If None the default is used, where the default
                               is set to the exposure psf if available
    @param[in]     defects     List of defects of type ipIsr.Defects
                               over which to interpolate.

Definition at line 120 of file interpImage.py.

120  def run(self, image, planeName=None, fwhmPixels=None, defects=None):
121  """!Interpolate in place over pixels in a maskedImage marked as bad
122 
123  Pixels to be interpolated are set by either a mask planeName provided
124  by the caller OR a defects list of type `~lsst.meas.algorithms.Defects`
125  If both are provided an exception is raised.
126 
127  Note that the interpolation code in meas_algorithms currently doesn't
128  use the input PSF (though it's a required argument), so it's not
129  important to set the input PSF parameters exactly. This PSF is set
130  here as the psf attached to the "image" (i.e if the image passed in
131  is an Exposure). Otherwise, a psf model is created using
132  measAlg.GaussianPsfFactory with the value of fwhmPixels (the value
133  passed in by the caller, or the default defaultFwhm set in
134  measAlg.GaussianPsfFactory if None).
135 
136  @param[in,out] image MaskedImage OR Exposure to be interpolated
137  @param[in] planeName name of mask plane over which to interpolate
138  If None, must provide a defects list.
139  @param[in] fwhmPixels FWHM of core star (pixels)
140  If None the default is used, where the default
141  is set to the exposure psf if available
142  @param[in] defects List of defects of type ipIsr.Defects
143  over which to interpolate.
144  """
145  try:
146  maskedImage = image.getMaskedImage()
147  except AttributeError:
148  maskedImage = image
149 
150  # set defectList from defects OR mask planeName provided
151  if planeName is None:
152  if defects is None:
153  raise ValueError("No defects or plane name provided")
154  else:
155  if not isinstance(defects, ipIsr.Defects):
156  defectList = ipIsr.Defects(defects)
157  else:
158  defectList = defects
159  planeName = "defects"
160  else:
161  if defects is not None:
162  raise ValueError("Provide EITHER a planeName OR a list of defects, not both")
163  if planeName not in maskedImage.getMask().getMaskPlaneDict():
164  raise ValueError("maskedImage does not contain mask plane %s" % planeName)
165  defectList = ipIsr.Defects.fromMask(maskedImage, planeName)
166 
167  # set psf from exposure if provided OR using modelPsf with fwhmPixels provided
168  try:
169  psf = image.getPsf()
170  self.log.info("Setting psf for interpolation from image")
171  except AttributeError:
172  self.log.info("Creating psf model for interpolation from fwhm(pixels) = %s",
173  str(fwhmPixels) if fwhmPixels is not None else
174  (str(self.config.modelPsf.defaultFwhm)) + " [default]")
175  psf = self.config.modelPsf.apply(fwhm=fwhmPixels)
176 
177  fallbackValue = 0.0 # interpolateOverDefects needs this to be a float, regardless if it is used
178  if self.config.useFallbackValueAtEdge:
179  fallbackValue = self._setFallbackValue(maskedImage)
180 
181  self.interpolateImage(maskedImage, psf, defectList, fallbackValue)
182 
183  self.log.info("Interpolated over %d %s pixels.", len(defectList), planeName)
184 
def run(self, coaddExposures, bbox, wcs)
Definition: getTemplate.py:603

◆ transposeContext()

def lsst.pipe.tasks.interpImage.InterpImageTask.transposeContext (   self,
  maskedImage,
  defects 
)
Context manager to potentially transpose an image

This applies the ``transpose`` configuration setting.

Transposing the image allows us to interpolate along columns instead
of rows, which is useful when the saturation trails are typically
oriented along rows on the warped/coadded images, instead of along
columns as they typically are in raw CCD images.

Parameters
----------
maskedImage : `lsst.afw.image.MaskedImage`
    Image on which to perform interpolation.
defects : `lsst.meas.algorithms.Defects`
    List of defects to interpolate over.

Yields
------
useImage : `lsst.afw.image.MaskedImage`
    Image to use for interpolation; it may have been transposed.
useDefects : `lsst.meas.algorithms.Defects`
    List of defects to use for interpolation; they may have been
    transposed.

Definition at line 186 of file interpImage.py.

186  def transposeContext(self, maskedImage, defects):
187  """Context manager to potentially transpose an image
188 
189  This applies the ``transpose`` configuration setting.
190 
191  Transposing the image allows us to interpolate along columns instead
192  of rows, which is useful when the saturation trails are typically
193  oriented along rows on the warped/coadded images, instead of along
194  columns as they typically are in raw CCD images.
195 
196  Parameters
197  ----------
198  maskedImage : `lsst.afw.image.MaskedImage`
199  Image on which to perform interpolation.
200  defects : `lsst.meas.algorithms.Defects`
201  List of defects to interpolate over.
202 
203  Yields
204  ------
205  useImage : `lsst.afw.image.MaskedImage`
206  Image to use for interpolation; it may have been transposed.
207  useDefects : `lsst.meas.algorithms.Defects`
208  List of defects to use for interpolation; they may have been
209  transposed.
210  """
211  def transposeImage(image):
212  """Transpose an image"""
213  transposed = image.array.T.copy() # Copy to force row-major; required for ndarray+pybind
214  return image.Factory(transposed, False, lsst.geom.Point2I(*reversed(image.getXY0())))
215 
216  useImage = maskedImage
217  useDefects = defects
218  if self.config.transpose:
219  useImage = afwImage.makeMaskedImage(transposeImage(maskedImage.image),
220  transposeImage(maskedImage.mask),
221  transposeImage(maskedImage.variance))
222  useDefects = defects.transpose()
223  yield useImage, useDefects
224  if self.config.transpose:
225  maskedImage.image.array = useImage.image.array.T
226  maskedImage.mask.array = useImage.mask.array.T
227  maskedImage.variance.array = useImage.variance.array.T
228 
MaskedImage< ImagePixelT, MaskPixelT, VariancePixelT > * makeMaskedImage(typename std::shared_ptr< Image< ImagePixelT >> image, typename std::shared_ptr< Mask< MaskPixelT >> mask=Mask< MaskPixelT >(), typename std::shared_ptr< Image< VariancePixelT >> variance=Image< VariancePixelT >())
A function to return a MaskedImage of the correct type (cf.
Definition: MaskedImage.h:1240

Member Data Documentation

◆ ConfigClass

lsst.pipe.tasks.interpImage.InterpImageTask.ConfigClass = InterpImageConfig
static

Definition at line 83 of file interpImage.py.


The documentation for this class was generated from the following file: