33 namespace afwGeom = lsst::afw::geom;
42 template<
typename ImageT>
46 typename ImageT::Ptr outImage;
48 while (nQuarter < 0) {
54 outImage.reset(
new ImageT(inImage,
true));
57 outImage.reset(
new ImageT(
afwGeom::Extent2I(inImage.getHeight(), inImage.getWidth())));
59 for (
int y = 0;
y != inImage.getHeight(); ++
y) {
60 typename ImageT::y_iterator optr = outImage->col_begin(inImage.getHeight() -
y - 1);
61 for (
typename ImageT::x_iterator iptr = inImage.row_begin(
y), end = inImage.row_end(
y);
62 iptr != end; ++iptr, ++optr) {
69 outImage.reset(
new ImageT(inImage.getDimensions()));
71 for (
int y = 0;
y != inImage.getHeight(); ++
y) {
72 typename ImageT::x_iterator optr = outImage->x_at(inImage.getWidth() - 1,
73 inImage.getHeight() -
y - 1);
74 for (
typename ImageT::x_iterator iptr = inImage.row_begin(
y), end = inImage.row_end(
y);
75 iptr != end; ++iptr, optr -= 1) {
81 outImage.reset(
new ImageT(
afwGeom::Extent2I(inImage.getHeight(), inImage.getWidth())));
83 for (
int y = 0;
y != inImage.getHeight(); ++
y) {
84 typename ImageT::y_iterator optr = outImage->y_at(
y, inImage.getWidth() - 1);
85 for (
typename ImageT::x_iterator iptr = inImage.row_begin(
y), end = inImage.row_end(
y);
86 iptr != end; ++iptr, optr -= 1) {
100 template<
typename ImageT>
105 typename ImageT::Ptr outImage(
new ImageT(inImage,
true));
109 for (
int y = 0;
y != inImage.getHeight(); ++
y) {
110 typename ImageT::x_iterator optr = outImage->x_at(inImage.getWidth() - 1,
111 inImage.getHeight() -
y - 1);
112 for (
typename ImageT::x_iterator iptr = inImage.row_begin(
y), end = inImage.row_end(
y);
113 iptr != end; ++iptr, optr -= 1) {
118 for (
int y = 0;
y != inImage.getHeight(); ++
y) {
119 typename ImageT::x_iterator optr = outImage->x_at(inImage.getWidth() - 1,
y);
120 for (
typename ImageT::x_iterator iptr = inImage.row_begin(
y), end = inImage.row_end(
y);
121 iptr != end; ++iptr, optr -= 1) {
128 for (
int y = 0;
y != inImage.getHeight(); ++
y) {
129 typename ImageT::x_iterator optr = outImage->row_begin(inImage.getHeight() -
y - 1);
130 for (
typename ImageT::x_iterator iptr = inImage.row_begin(
y), end = inImage.row_end(
y);
131 iptr != end; ++iptr, ++optr) {
148 #define INSTANTIATE(TYPE) \
149 template afwImage::Image<TYPE>::Ptr rotateImageBy90(afwImage::Image<TYPE> const&, int); \
150 template afwImage::MaskedImage<TYPE>::Ptr rotateImageBy90(afwImage::MaskedImage<TYPE> const&, int); \
151 template afwImage::Image<TYPE>::Ptr flipImage(afwImage::Image<TYPE> const&, bool flipLR, bool flipTB); \
152 template afwImage::MaskedImage<TYPE>::Ptr flipImage(afwImage::MaskedImage<TYPE> const&, bool flipLR, bool flipTB);
159 template afwImage::Mask<std::uint16_t>::Ptr
rotateImageBy90(afwImage::Mask<std::uint16_t> const&,
int);
160 template afwImage::Mask<std::uint16_t>::Ptr
flipImage(afwImage::Mask<std::uint16_t> const&,
bool flipLR,
bool flipTB);
boost::shared_ptr< ImageT > flipImage(ImageT const &inImage, bool flipLR, bool flipTB)
table::Key< table::Array< Kernel::Pixel > > image
ImageT::Ptr rotateImageBy90(ImageT const &inImage, int nQuarter)