def testStarsResizeSpecifications(self): """Test creating an RGB image changing the output """ rgbImages = [self.images[R], self.images[G], self.images[B]] map = rgb.AsinhZScaleMapping(rgbImages[0]) for xSize, ySize, frac in [ (self.images[R].getWidth() // 2, self.images[R].getHeight() // 2, None), (2 * self.images[R].getWidth(), None, None), (self.images[R].getWidth() // 2, None, None), (None, self.images[R].getHeight() // 2, None), (None, None, 0.5), (None, None, 2), ]: rgbImage = map.makeRgbImage(*rgbImages, xSize=xSize, ySize=ySize, rescaleFactor=frac) h, w = rgbImage.shape[0:2] self.assertTrue(xSize is None or xSize == w) self.assertTrue(ySize is None or ySize == h) self.assertTrue( frac is None or w == int(frac * self.images[R].getWidth()), "%g == %g" % (w, int((frac if frac else 1) * self.images[R].getWidth()))) if display: rgb.displayRGB(rgbImage)
def testStarsAsinhZscaleIntensityBW(self): """Test creating a black-and-white image using an asinh stretch estimated using zscale on the intensity""" rgbImage = rgb.AsinhZScaleMapping(self.images[R]).makeRgbImage() if display: rgb.displayRGB(rgbImage)
def testStarsAsinhZscaleIntensity(self): """Test creating an RGB image using an asinh stretch estimated using zscale on the intensity""" rgbImages = [self.images[R], self.images[G], self.images[B]] map = rgb.AsinhZScaleMapping(rgbImages) rgbImage = map.makeRgbImage(*rgbImages) if display: rgb.displayRGB(rgbImage)
def __init__(self, image=None, Q=8): """Initialise an object able to carry out an asinh mapping @param image image to use estimate minimum and dataRange using zscale (see AsinhNormalize) @param Q Softening parameter (default: 8) See Lupton et al., PASP 116, 133 """ Normalize.__init__(self) ## The object used to perform the desired mapping self.mapping = afwRgb.AsinhZScaleMapping(image, Q)
def testStarsResizeToSize(self): """Test creating an RGB image of a specified size""" xSize = self.images[R].getWidth()//2 ySize = self.images[R].getHeight()//2 for rgbImages in ([self.images[R], self.images[G], self.images[B]], [afwImage.ImageU(_.getArray().astype('uint16')) for _ in [ self.images[R], self.images[G], self.images[B]]]): rgbImage = rgb.AsinhZScaleMapping(rgbImages[0]).makeRgbImage(*rgbImages, xSize=xSize, ySize=ySize) if display: rgb.displayRGB(rgbImage)
def testStarsAsinhZscaleIntensityPedestal(self): """Test creating an RGB image using an asinh stretch estimated using zscale on the intensity where the images each have a pedestal added""" rgbImages = [self.images[R], self.images[G], self.images[B]] pedestal = [100, 400, -400] for i, ped in enumerate(pedestal): rgbImages[i] += ped map = rgb.AsinhZScaleMapping(rgbImages, pedestal=pedestal) rgbImage = map.makeRgbImage(*rgbImages) if display: rgb.displayRGB(rgbImage)
def __init__(self, image=None, Q=8): """Initialise an object able to carry out an asinh mapping @param image image to use estimate minimum and dataRange using zscale (see AsinhNormalize) @param Q Softening parameter (default: 8) See Lupton et al., PASP 116, 133 """ # The object used to perform the desired mapping self.mapping = afwRgb.AsinhZScaleMapping(image, Q) vmin, vmax = self._getMinMaxQ()[0:2] # n.b. super() would call AsinhNormalize, # and I want to pass min/max to the baseclass Normalize.__init__(self, vmin, vmax)