LSSTApplications  19.0.0-10-g4a5fae6+3,19.0.0-10-g920eed2,19.0.0-11-g48a0200+2,19.0.0-18-gfc4e62b+16,19.0.0-2-g3b2f90d+2,19.0.0-2-gd671419+6,19.0.0-20-g5a5a17ab+14,19.0.0-21-g2644856+17,19.0.0-24-g0913cb1,19.0.0-24-g878c510+4,19.0.0-25-g6c8df7140+1,19.0.0-25-gb330496+4,19.0.0-3-g2b32d65+6,19.0.0-3-g8227491+15,19.0.0-3-g9c54d0d+15,19.0.0-3-gca68e65+11,19.0.0-3-gcfc5f51+6,19.0.0-3-ge110943+14,19.0.0-3-ge74d124,19.0.0-30-g9c3fd16+5,19.0.0-4-g06f5963+6,19.0.0-4-g10df615,19.0.0-4-g3d16501+17,19.0.0-4-g4a9c019+6,19.0.0-4-g5a8b323,19.0.0-4-g66397f0+1,19.0.0-4-g8557e14,19.0.0-4-g8964aba+16,19.0.0-4-ge404a01+15,19.0.0-5-g40f3a5a,19.0.0-5-g4db63b3,19.0.0-5-gb9eeb60,19.0.0-5-gfb03ce7+16,19.0.0-6-gbaebbfb+15,19.0.0-61-gec4c6e08+5,19.0.0-7-g039c0b5+15,19.0.0-7-gbea9075+4,19.0.0-7-gc567de5+16,19.0.0-72-g37abf38+2,19.0.0-9-g463f923+15,v20.0.0.rc1
LSSTDataManagementBasePackage
DecoratedImage.cc
Go to the documentation of this file.
1 /*
2  * LSST Data Management System
3  * Copyright 2008, 2009, 2010 LSST Corporation.
4  *
5  * This product includes software developed by the
6  * LSST Project (http://www.lsst.org/).
7  *
8  * This program is free software: you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation, either version 3 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the LSST License Statement and
19  * the GNU General Public License along with this program. If not,
20  * see <http://www.lsstcorp.org/LegalNotices/>.
21  */
22 
23 /*
24  * An Image with associated metadata
25  */
26 #include <cstdint>
27 #include <iostream>
28 
29 #include "boost/format.hpp"
30 #include "boost/mpl/vector.hpp"
31 
32 #include "boost/version.hpp"
33 #if BOOST_VERSION < 106900
34 #include "boost/gil/gil_all.hpp"
35 #else
36 #include "boost/gil.hpp"
37 #endif
38 
39 #include "lsst/pex/exceptions.h"
40 #include "lsst/afw/fits.h"
41 #include "lsst/afw/image/Image.h"
42 
43 namespace lsst {
44 namespace afw {
45 namespace image {
46 
47 template <typename PixelT>
48 void DecoratedImage<PixelT>::init() {
49  // safer to initialize a smart pointer as a named variable
50  std::shared_ptr<daf::base::PropertySet> metadata(new daf::base::PropertyList);
51  setMetadata(metadata);
52  _gain = 0;
53 }
54 
55 template <typename PixelT>
57  : _image(new Image<PixelT>(dimensions)) {
58  init();
59 }
60 template <typename PixelT>
62  init();
63 }
64 template <typename PixelT>
66  init();
67 }
68 template <typename PixelT>
70  : _image(new Image<PixelT>(*src._image, deep)), _gain(src._gain) {
71  setMetadata(src.getMetadata());
72 }
73 template <typename PixelT>
75  DecoratedImage tmp(src);
76  swap(tmp); // See Meyers, Effective C++, Item 11
77 
78  return *this;
79 }
80 
81 template <typename PixelT>
83  using std::swap; // See Meyers, Effective C++, Item 25
84 
85  swap(_image, rhs._image); // just swapping the pointers
86  swap(_gain, rhs._gain);
87 }
88 
89 template <typename PixelT>
91  a.swap(b);
92 }
93 
94 //
95 // FITS code
96 //
97 template <typename PixelT>
98 DecoratedImage<PixelT>::DecoratedImage(const std::string& fileName, const int hdu,
99  lsst::geom::Box2I const& bbox, ImageOrigin const origin,
100  bool allowUnsafe) {
101  init();
103  new Image<PixelT>(fileName, hdu, getMetadata(), bbox, origin, allowUnsafe));
104 }
105 
106 template <typename PixelT>
109  std::string const& mode) const {
110  fits::ImageWriteOptions const options;
111  writeFits(fileName, options, metadata, mode);
112 }
113 
114 template <typename PixelT>
117  std::string const& mode) const {
119 
120  if (metadata_i) {
121  metadata = getMetadata()->deepCopy();
122  metadata->combine(metadata_i);
123  } else {
124  metadata = getMetadata();
125  }
126 
127  getImage()->writeFits(fileName, options, mode, metadata);
128 }
129 
130 //
131 // Explicit instantiations
132 //
133 template class DecoratedImage<std::uint16_t>;
134 template class DecoratedImage<int>;
135 template class DecoratedImage<float>;
136 template class DecoratedImage<double>;
137 template class DecoratedImage<std::uint64_t>;
138 } // namespace image
139 } // namespace afw
140 } // namespace lsst
lsst::afw::image
Backwards-compatibility support for depersisting the old Calib (FluxMag0/FluxMag0Err) objects.
Definition: imageAlgorithm.dox:1
lsst::afw::image::DecoratedImage
A container for an Image and its associated metadata.
Definition: Image.h:404
std::string
STL class.
std::shared_ptr
STL class.
lsst::afw::image::DecoratedImage::setMetadata
void setMetadata(std::shared_ptr< lsst::daf::base::PropertySet > metadata)
Definition: Image.h:460
fits.h
lsst::ip::diffim::detail::PixelT
float PixelT
Definition: AssessSpatialKernelVisitor.cc:208
lsst::afw
Definition: imageAlgorithm.dox:1
lsst::afw::image::DecoratedImage::operator=
DecoratedImage & operator=(const DecoratedImage &image)
Assignment operator.
Definition: DecoratedImage.cc:74
Image.h
lsst::afw::fits::ImageWriteOptions
Options for writing an image to FITS.
Definition: fits.h:219
src
std::shared_ptr< RecordT > src
Definition: Match.cc:48
lsst::afw::image::DecoratedImage::swap
void swap(DecoratedImage &rhs)
Definition: DecoratedImage.cc:82
exceptions.h
dimensions
afw::table::PointKey< int > dimensions
Definition: GaussianPsf.cc:49
b
table::Key< int > b
Definition: TransmissionCurve.cc:467
lsst
A base class for image defects.
Definition: imageAlgorithm.dox:1
lsst::afw::image::DecoratedImage::DecoratedImage
DecoratedImage(const lsst::geom::Extent2I &dimensions=lsst::geom::Extent2I())
Create an image of the specified size.
Definition: DecoratedImage.cc:56
std::swap
T swap(T... args)
a
table::Key< int > a
Definition: TransmissionCurve.cc:466
lsst::geom::Box2I
An integer coordinate rectangle.
Definition: Box.h:55
lsst::afw::image::swap
void swap(Image< PixelT > &a, Image< PixelT > &b)
Definition: Image.cc:456
lsst::afw::image::ImageOrigin
ImageOrigin
Definition: ImageBase.h:94
lsst::afw::image::Image
A class to represent a 2-dimensional array of pixels.
Definition: Image.h:58
lsst::utils.tests.init
def init()
Definition: tests.py:58
lsst::geom::Extent< int, 2 >
bbox
AmpInfoBoxKey bbox
Definition: Amplifier.cc:117
lsst::afw::image::DecoratedImage::writeFits
void writeFits(std::string const &fileName, std::shared_ptr< lsst::daf::base::PropertySet const > metadata=std::shared_ptr< lsst::daf::base::PropertySet const >(), std::string const &mode="w") const
Write a FITS file.
Definition: DecoratedImage.cc:107