45template <
typename ImageT,
typename MaskT,
typename VarianceT>
50template <
typename ImageT,
typename MaskT,
typename VarianceT>
55template <
typename ImageT,
typename MaskT,
typename VarianceT>
60template <
typename ImageT,
typename MaskT,
typename VarianceT>
65template <
typename ImageT,
typename MaskT,
typename VarianceT>
69template <
typename ImageT,
typename MaskT,
typename VarianceT>
73template <
typename ImageT,
typename MaskT,
typename VarianceT>
76template <
typename ImageT,
typename MaskT,
typename VarianceT>
79 : _maskedImage(
src.getMaskedImage(),
bbox, origin, deep),
82template <
typename ImageT,
typename MaskT,
typename VarianceT>
84 ImageOrigin origin,
bool conformMasks,
bool allowUnsafe)
87 *
this = reader.
read<ImageT, MaskT, VarianceT>(
bbox, origin, conformMasks, allowUnsafe);
90template <
typename ImageT,
typename MaskT,
typename VarianceT>
92 ImageOrigin origin,
bool conformMasks,
bool allowUnsafe)
95 *
this = reader.
read<ImageT, MaskT, VarianceT>(
bbox, origin, conformMasks, allowUnsafe);
98template <
typename ImageT,
typename MaskT,
typename VarianceT>
100 ImageOrigin origin,
bool conformMasks,
bool allowUnsafe) {
102 *
this = reader.
read<ImageT, MaskT, VarianceT>(
bbox, origin, conformMasks, allowUnsafe);
105template <
typename ImageT,
typename MaskT,
typename VarianceT>
110template <
typename ImageT,
typename MaskT,
typename VarianceT>
112 _maskedImage = maskedImage;
115template <
typename ImageT,
typename MaskT,
typename VarianceT>
118 if (_info->hasWcs()) {
120 auto newWcs = _info->getWcs()->copyAtShiftedPixelOrigin(shift);
121 _info->setWcs(newWcs);
123 _maskedImage.setXY0(origin);
126template <
typename ImageT,
typename MaskT,
typename VarianceT>
128template <
typename ImageT,
typename MaskT,
typename VarianceT>
133template <
typename ImageT,
typename MaskT,
typename VarianceT>
139template <
typename ImageT,
typename MaskT,
typename VarianceT>
145template <
typename ImageT,
typename MaskT,
typename VarianceT>
152template <
typename ImageT,
typename MaskT,
typename VarianceT>
158 writeFits(fitsfile, imageOptions, maskOptions, varianceOptions);
161template <
typename ImageT,
typename MaskT,
typename VarianceT>
167 writeFits(fitsfile, imageOptions, maskOptions, varianceOptions);
170template <
typename ImageT,
typename MaskT,
typename VarianceT>
175 ExposureInfo::FitsWriteData
data = _info->_startWriteFits(getXY0());
176 _maskedImage.writeFits(fitsfile, imageOptions, maskOptions, varianceOptions,
data.metadata,
177 data.imageMetadata,
data.maskMetadata,
data.varianceMetadata);
178 _info->_finishWriteFits(fitsfile,
data);
190template <
class ExposureT>
191void _copyCommonPixels(ExposureT &destination, ExposureT
const &
source) {
197 typename ExposureT::MaskedImageT overlapPixels(
source.getMaskedImage(), overlapBox);
198 destination.getMaskedImage().assign(overlapPixels, overlapBox);
203template <
typename ImageT,
typename MaskT,
typename VarianceT>
213 buffer <<
"Point " << center <<
" lies at pixel " << pixelCenter <<
", which lies outside Exposure "
217 if (size[0] <= 0 || size[1] <= 0) {
219 buffer <<
"Cannot create bounding box with dimensions " << size;
225 auto copyInfo = std::make_shared<ExposureInfo>(*
getInfo());
227 blank = math::edgePixel<MaskedImageT>(
231 _copyCommonPixels(cutout, *
this);
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
afw::table::PointKey< int > dimensions
std::shared_ptr< RecordT > src
A simple struct that combines the two arguments that must be passed to most cfitsio routines and cont...
Lifetime-management for memory that goes into FITS memory files.
A FITS reader class for Exposures and their components.
Exposure< ImagePixelT, MaskPixelT, VariancePixelT > read(lsst::geom::Box2I const &bbox=lsst::geom::Box2I(), ImageOrigin origin=PARENT, bool conformMasks=false, bool allowUnsafe=false)
Read the full Exposure.
A class to contain the data, WCS, and other information needed to describe an image of the sky.
Exposure getCutout(lsst::geom::SpherePoint const ¢er, lsst::geom::Extent2I const &size) const
Return an Exposure that is a small cutout of the original.
void writeFits(std::string const &fileName) const
Write an Exposure to a regular multi-extension FITS file.
virtual ~Exposure()
Destructor.
Exposure(unsigned int width, unsigned int height, std::shared_ptr< geom::SkyWcs const > wcs=std::shared_ptr< geom::SkyWcs const >())
Construct an Exposure with a blank MaskedImage of specified size (default 0x0) and a SkyWcs (which ma...
Exposure & operator=(Exposure const &)
void setXY0(lsst::geom::Point2I const &origin)
Set the Exposure's origin (including correcting the Wcs)
void setMaskedImage(MaskedImageT &maskedImage)
Set the MaskedImage of the Exposure.
A collection of all the things that make an Exposure different from a MaskedImage.
A class to manipulate images, masks, and variance as a single object.
A floating-point coordinate rectangle geometry.
An integer coordinate rectangle.
void clip(Box2I const &other) noexcept
Shrink this to ensure that other.contains(*this).
bool isEmpty() const noexcept
Return true if the box contains no points.
static Box2I makeCenteredBox(Point2D const ¢er, Extent const &size)
Create a box centered as closely as possible on a particular point.
Point in an unspecified spherical coordinate system.
Reports invalid arguments.
Reports errors in the logical structure of the program.
const char * source()
Source function that allows astChannel to source from a Stream.
Backwards-compatibility support for depersisting the old Calib (FluxMag0/FluxMag0Err) objects.
Extent< double, 2 > Extent2D
def writeFits(filename, stamps, metadata, type_name, write_mask, write_variance, write_archive=False)
A base class for image defects.
Options for writing an image to FITS.
typename ImageT::image_category image_category