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 | List of all members
lsst.afw.display.rgb._rgbContinued.Mapping Class Reference
Inheritance diagram for lsst.afw.display.rgb._rgbContinued.Mapping:
lsst.afw.display.rgb._rgbContinued.AsinhMapping lsst.afw.display.rgb._rgbContinued.LinearMapping lsst.afw.display.rgb._rgbContinued.AsinhZScaleMapping lsst.afw.display.rgb._rgbContinued.ZScaleMapping

Public Member Functions

def __init__ (self, minimum=None, image=None)
 
def makeRgbImage (self, imageR=None, imageG=None, imageB=None, xSize=None, ySize=None, rescaleFactor=None)
 
def intensity (self, imageR, imageG, imageB)
 
def mapIntensityToUint8 (self, intensity)
 

Public Attributes

 minimum
 

Detailed Description

Base class to map red, blue, green intensities into uint8 values

Parameters
----------
minimum : `float` or sequence of `float`
    Intensity that should be mapped to black. If an array, has three
    elements for R, G, B.
image
    The image to be used to calculate the mapping.
    If provided, also the default for makeRgbImage()

Definition at line 73 of file _rgbContinued.py.

Constructor & Destructor Documentation

◆ __init__()

def lsst.afw.display.rgb._rgbContinued.Mapping.__init__ (   self,
  minimum = None,
  image = None 
)

Definition at line 86 of file _rgbContinued.py.

86  def __init__(self, minimum=None, image=None):
87  self._uint8Max = float(np.iinfo(np.uint8).max)
88 
89  try:
90  len(minimum)
91  except TypeError:
92  minimum = 3*[minimum]
93  assert len(minimum) == 3, "Please provide 1 or 3 values for minimum"
94 
95  self.minimum = minimum
96  self._image = image
97 

Member Function Documentation

◆ intensity()

def lsst.afw.display.rgb._rgbContinued.Mapping.intensity (   self,
  imageR,
  imageG,
  imageB 
)
Return the total intensity from the red, blue, and green intensities

Notes
-----
This is a naive computation, and may be overridden by subclasses

Definition at line 160 of file _rgbContinued.py.

160  def intensity(self, imageR, imageG, imageB):
161  """Return the total intensity from the red, blue, and green intensities
162 
163  Notes
164  -----
165  This is a naive computation, and may be overridden by subclasses
166  """
167  return computeIntensity(imageR, imageG, imageB)
168 
def computeIntensity(imageR, imageG=None, imageB=None)

◆ makeRgbImage()

def lsst.afw.display.rgb._rgbContinued.Mapping.makeRgbImage (   self,
  imageR = None,
  imageG = None,
  imageB = None,
  xSize = None,
  ySize = None,
  rescaleFactor = None 
)
Convert 3 arrays, imageR, imageG, and imageB into a numpy RGB image

imageR : `lsst.afw.image.Image` or `numpy.ndarray`, (Nx, Ny)
    Image to map to red (if `None`, use the image passed to the ctor)
imageG : `lsst.afw.image.Image` or `numpy.ndarray`, (Nx, Ny), optional
    Image to map to green (if `None`, use imageR)
imageB : `lsst.afw.image.Image` or `numpy.ndarray`, (Nx, Ny), optional
    Image to map to blue (if `None`, use imageR)
xSize : `int`, optional
    Desired width of RGB image. If ``ySize`` is `None`, preserve aspect ratio
ySize : `int`, optional
    Desired height of RGB image
rescaleFactor : `float`, optional
    Make size of output image ``rescaleFactor*size`` of the input image

Definition at line 98 of file _rgbContinued.py.

99  xSize=None, ySize=None, rescaleFactor=None):
100  """Convert 3 arrays, imageR, imageG, and imageB into a numpy RGB image
101 
102  imageR : `lsst.afw.image.Image` or `numpy.ndarray`, (Nx, Ny)
103  Image to map to red (if `None`, use the image passed to the ctor)
104  imageG : `lsst.afw.image.Image` or `numpy.ndarray`, (Nx, Ny), optional
105  Image to map to green (if `None`, use imageR)
106  imageB : `lsst.afw.image.Image` or `numpy.ndarray`, (Nx, Ny), optional
107  Image to map to blue (if `None`, use imageR)
108  xSize : `int`, optional
109  Desired width of RGB image. If ``ySize`` is `None`, preserve aspect ratio
110  ySize : `int`, optional
111  Desired height of RGB image
112  rescaleFactor : `float`, optional
113  Make size of output image ``rescaleFactor*size`` of the input image
114  """
115  if imageR is None:
116  if self._image is None:
117  raise RuntimeError(
118  "You must provide an image (or pass one to the constructor)")
119  imageR = self._image
120 
121  if imageG is None:
122  imageG = imageR
123  if imageB is None:
124  imageB = imageR
125 
126  imageRGB = [imageR, imageG, imageB]
127  for i, c in enumerate(imageRGB):
128  if hasattr(c, "getImage"):
129  c = imageRGB[i] = c.getImage()
130  if hasattr(c, "getArray"):
131  imageRGB[i] = c.getArray()
132 
133  if xSize is not None or ySize is not None:
134  assert rescaleFactor is None, "You may not specify a size and rescaleFactor"
135  h, w = imageRGB[0].shape
136  if ySize is None:
137  ySize = int(xSize*h/float(w) + 0.5)
138  elif xSize is None:
139  xSize = int(ySize*w/float(h) + 0.5)
140 
141  size = (ySize, xSize) # n.b. y, x order for scipy
142  elif rescaleFactor is not None:
143  size = float(rescaleFactor) # an int is intepreted as a percentage
144  else:
145  size = None
146 
147  if size is not None:
148  try:
149  import scipy.misc
150  except ImportError as e:
151  raise RuntimeError(
152  f"Unable to rescale as scipy.misc is unavailable: {e}")
153 
154  for i, im in enumerate(imageRGB):
155  imageRGB[i] = scipy.misc.imresize(
156  im, size, interp='bilinear', mode='F')
157 
158  return np.dstack(self._convertImagesToUint8(*imageRGB)).astype(np.uint8)
159 

◆ mapIntensityToUint8()

def lsst.afw.display.rgb._rgbContinued.Mapping.mapIntensityToUint8 (   self,
  intensity 
)
Map an intensity into the range of a uint8, [0, 255] (but not converted to uint8)

Reimplemented in lsst.afw.display.rgb._rgbContinued.AsinhMapping, and lsst.afw.display.rgb._rgbContinued.LinearMapping.

Definition at line 169 of file _rgbContinued.py.

169  def mapIntensityToUint8(self, intensity):
170  """Map an intensity into the range of a uint8, [0, 255] (but not converted to uint8)
171  """
172  with np.errstate(invalid='ignore', divide='ignore'): # n.b. np.where can't and doesn't short-circuit
173  return np.where(intensity <= 0, 0,
174  np.where(intensity < self._uint8Max, intensity, self._uint8Max))
175 

Member Data Documentation

◆ minimum

lsst.afw.display.rgb._rgbContinued.Mapping.minimum

Definition at line 95 of file _rgbContinued.py.


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