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 | Public Attributes | Static Public Attributes | List of all members
lsst.pipe.tasks.maskStreaks.MaskStreaksTask Class Reference
Inheritance diagram for lsst.pipe.tasks.maskStreaks.MaskStreaksTask:

Public Member Functions

def find (self, maskedImage)
 
def run (self, maskedImage)
 

Public Attributes

 edges
 
 lines
 

Static Public Attributes

 ConfigClass = MaskStreaksConfig
 

Detailed Description

Find streaks or other straight lines in image data.

Nearby objects passing through the field of view of the telescope leave a
bright trail in images. This class uses the Kernel Hough Transform (KHT)
(Fernandes and Oliveira, 2007), implemented in `lsst.houghtransform`. The
procedure works by taking a binary image, either provided as put or produced
from the input data image, using a Canny filter to make an image of the
edges in the original image, then running the KHT on the edge image. The KHT
identifies clusters of non-zero points, breaks those clusters of points into
straight lines, keeps clusters with a size greater than the user-set
threshold, then performs a voting procedure to find the best-fit coordinates
of any straight lines. Given the results of the KHT algorithm, clusters of
lines are identified and grouped (generally these correspond to the two
edges of a strea) and a profile is fit to the streak in the original
(non-binary) image.

Definition at line 508 of file maskStreaks.py.

Member Function Documentation

◆ find()

def lsst.pipe.tasks.maskStreaks.MaskStreaksTask.find (   self,
  maskedImage 
)
Find streaks in a masked image

Parameters
----------
maskedImage : `lsst.afw.image.maskedImage`
    The image in which to search for streaks.

Returns
-------
result : `lsst.pipe.base.Struct`
    Result struct with components:

    - ``originalLines``: lines identified by kernel hough transform
    - ``lineClusters``:  lines grouped into clusters in rho-theta space
    - ``lines``: final result for lines after line-profile fit
    - ``mask``: 2-d boolean mask where detected lines are True

Definition at line 530 of file maskStreaks.py.

530  def find(self, maskedImage):
531  """Find streaks in a masked image
532 
533  Parameters
534  ----------
535  maskedImage : `lsst.afw.image.maskedImage`
536  The image in which to search for streaks.
537 
538  Returns
539  -------
540  result : `lsst.pipe.base.Struct`
541  Result struct with components:
542 
543  - ``originalLines``: lines identified by kernel hough transform
544  - ``lineClusters``: lines grouped into clusters in rho-theta space
545  - ``lines``: final result for lines after line-profile fit
546  - ``mask``: 2-d boolean mask where detected lines are True
547  """
548  mask = maskedImage.getMask()
549  detectionMask = (mask.array & mask.getPlaneBitMask(self.config.detectedMaskPlane))
550 
551  self.edges = self._cannyFilter(detectionMask)
552  self.lines = self._runKHT(self.edges)
553 
554  if len(self.lines) == 0:
555  lineMask = np.zeros(detectionMask.shape, dtype=bool)
556  fitLines = LineCollection([], [])
557  clusters = LineCollection([], [])
558  else:
559  clusters = self._findClusters(self.lines)
560  fitLines, lineMask = self._fitProfile(clusters, maskedImage)
561 
562  # The output mask is the intersection of the fit streaks and the image detections
563  outputMask = lineMask & detectionMask.astype(bool)
564 
565  return pipeBase.Struct(
566  lines=fitLines,
567  lineClusters=clusters,
568  originalLines=self.lines,
569  mask=outputMask,
570  )
571 

◆ run()

def lsst.pipe.tasks.maskStreaks.MaskStreaksTask.run (   self,
  maskedImage 
)
Find and mask streaks in a masked image.

Finds streaks in the image and modifies maskedImage in place by adding a
mask plane with any identified streaks.

Parameters
----------
maskedImage : `lsst.afw.image.maskedImage`
    The image in which to search for streaks. The mask detection plane
    corresponding to `config.detectedMaskPlane` must be set with the
    detected pixels.

Returns
-------
result : `lsst.pipe.base.Struct`
    Result struct with components:

    - ``originalLines``: lines identified by kernel hough transform
    - ``lineClusters``:  lines grouped into clusters in rho-theta space
    - ``lines``: final result for lines after line-profile fit

Definition at line 573 of file maskStreaks.py.

573  def run(self, maskedImage):
574  """Find and mask streaks in a masked image.
575 
576  Finds streaks in the image and modifies maskedImage in place by adding a
577  mask plane with any identified streaks.
578 
579  Parameters
580  ----------
581  maskedImage : `lsst.afw.image.maskedImage`
582  The image in which to search for streaks. The mask detection plane
583  corresponding to `config.detectedMaskPlane` must be set with the
584  detected pixels.
585 
586  Returns
587  -------
588  result : `lsst.pipe.base.Struct`
589  Result struct with components:
590 
591  - ``originalLines``: lines identified by kernel hough transform
592  - ``lineClusters``: lines grouped into clusters in rho-theta space
593  - ``lines``: final result for lines after line-profile fit
594  """
595  streaks = self.find(maskedImage)
596 
597  maskedImage.mask.addMaskPlane(self.config.streaksMaskPlane)
598  maskedImage.mask.array[streaks.mask] |= maskedImage.mask.getPlaneBitMask(self.config.streaksMaskPlane)
599 
600  return pipeBase.Struct(
601  lines=streaks.lines,
602  lineClusters=streaks.lineClusters,
603  originalLines=streaks.originalLines,
604  )
605 
def run(self, coaddExposures, bbox, wcs)
Definition: getTemplate.py:603

Member Data Documentation

◆ ConfigClass

lsst.pipe.tasks.maskStreaks.MaskStreaksTask.ConfigClass = MaskStreaksConfig
static

Definition at line 526 of file maskStreaks.py.

◆ edges

lsst.pipe.tasks.maskStreaks.MaskStreaksTask.edges

Definition at line 551 of file maskStreaks.py.

◆ lines

lsst.pipe.tasks.maskStreaks.MaskStreaksTask.lines

Definition at line 552 of file maskStreaks.py.


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