28def makeCameraImage(camera, exposures, binning):
29 """Make and write an image of an entire focal plane
30
31 Parameters
32 ----------
34 Camera description.
36 CCD exposures, binned by `binning`.
37 binning : `int`
38 Binning size that has been applied to images.
39 """
40 class ImageSource:
41 """Source of images for makeImageFromCamera"""
42 def __init__(self, exposures):
43 """Constructor
44
45 Parameters
46 ----------
48 CCD exposures, already binned.
49 """
50 self.isTrimmed = True
51 self.exposures = exposures
52 self.background = np.nan
53
54 def getCcdImage(self, detector, imageFactory, binSize):
55 """Provide image of CCD to makeImageFromCamera"""
56 detId = detector.getId()
57 if detId not in self.exposures:
58 dims = detector.getBBox().getDimensions()/binSize
59 image = imageFactory(*[int(xx) for xx in dims])
60 image.set(self.background)
61 else:
62 image = self.exposures[detector.getId()]
63 if hasattr(image, "getMaskedImage"):
64 image = image.getMaskedImage()
65 if hasattr(image, "getMask"):
66 mask = image.getMask()
67 isBad = mask.getArray() & mask.getPlaneBitMask("NO_DATA") > 0
68 image = image.clone()
69 image.getImage().getArray()[isBad] = self.background
70 if hasattr(image, "getImage"):
71 image = image.getImage()
72
74
75 return image, detector
76
77 image = makeImageFromCamera(
78 camera,
79 imageSource=ImageSource(exposures),
80 imageFactory=afwImage.ImageF,
81 binSize=binning
82 )
83 return image
84
85
An immutable representation of a camera.
A class to contain the data, WCS, and other information needed to describe an image of the sky.
std::shared_ptr< ImageT > rotateImageBy90(ImageT const &image, int nQuarter)
Rotate an image by an integral number of quarter turns.