LSST Applications  21.0.0-147-g0e635eb1+1acddb5be5,22.0.0+052faf71bd,22.0.0+1ea9a8b2b2,22.0.0+6312710a6c,22.0.0+729191ecac,22.0.0+7589c3a021,22.0.0+9f079a9461,22.0.1-1-g7d6de66+b8044ec9de,22.0.1-1-g87000a6+536b1ee016,22.0.1-1-g8e32f31+6312710a6c,22.0.1-10-gd060f87+016f7cdc03,22.0.1-12-g9c3108e+df145f6f68,22.0.1-16-g314fa6d+c825727ab8,22.0.1-19-g93a5c75+d23f2fb6d8,22.0.1-19-gb93eaa13+aab3ef7709,22.0.1-2-g8ef0a89+b8044ec9de,22.0.1-2-g92698f7+9f079a9461,22.0.1-2-ga9b0f51+052faf71bd,22.0.1-2-gac51dbf+052faf71bd,22.0.1-2-gb66926d+6312710a6c,22.0.1-2-gcb770ba+09e3807989,22.0.1-20-g32debb5+b8044ec9de,22.0.1-23-gc2439a9a+fb0756638e,22.0.1-3-g496fd5d+09117f784f,22.0.1-3-g59f966b+1e6ba2c031,22.0.1-3-g849a1b8+f8b568069f,22.0.1-3-gaaec9c0+c5c846a8b1,22.0.1-32-g5ddfab5d3+60ce4897b0,22.0.1-4-g037fbe1+64e601228d,22.0.1-4-g8623105+b8044ec9de,22.0.1-5-g096abc9+d18c45d440,22.0.1-5-g15c806e+57f5c03693,22.0.1-7-gba73697+57f5c03693,master-g6e05de7fdc+c1283a92b8,master-g72cdda8301+729191ecac,w.2021.39
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 79 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 228 of file interpImage.py.

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

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

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


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