SourceXtractorPlusPlus 1.0.3
SourceXtractor++, the next generation SExtractor
Loading...
Searching...
No Matches
RecenterImage.h
Go to the documentation of this file.
1
17/*
18 * @file SEFramework/Image/WarpImage.h
19 * @date 11/09/18
20 * @author Alejandro Alvarez Ayllon
21 */
22
23#ifndef _SEFRAMEWORK_IMAGE_WARPIMAGE_H
24#define _SEFRAMEWORK_IMAGE_WARPIMAGE_H
25
28
29namespace SourceXtractor {
30
35template<typename T>
36class RecenterImage : public Image<T> {
37protected:
38 RecenterImage(std::shared_ptr<const Image<T>> img, const PixelCoordinate &new_center) : m_img{img},
39 m_center{new_center} {
40 }
41
42public:
43 template<typename... Args>
47
48 std::string getRepr() const override {
49 return "RecenterImage(" + m_img->getRepr() + ")";
50 }
51
52 int getWidth() const override {
53 return m_img->getWidth();
54 }
55
56 int getHeight() const override {
57 return m_img->getHeight();
58 }
59
60 std::shared_ptr<ImageChunk<T>> getChunk(int x, int y, int width, int height) const override{
61 ImageAccessor<T> accessor(m_img);
62 auto chunk = UniversalImageChunk<T>::create(width, height);
63 auto img_w = accessor.getWidth();
64 auto img_h = accessor.getHeight();
65 for (int iy = 0; iy < height; ++iy) {
66 for (int ix = 0; ix < width; ++ix) {
67 chunk->at(ix, iy) = accessor.getValue(
68 (ix + x + m_center.m_x) % img_w,
69 (iy + y + m_center.m_y) % img_h
70 );
71 }
72 }
73 return chunk;
74 }
75
76private:
79};
80
81} // end SourceXtractor
82
83#endif // _SEFRAMEWORK_IMAGE_WARPIMAGE_H
int getHeight() const override
Returns the height of the image in pixels.
int getWidth() const override
Returns the width of the image in pixels.
Interface representing an image.
Definition Image.h:44
std::shared_ptr< const Image< T > > m_img
std::string getRepr() const override
Get a string identifying this image in a human readable manner.
int getHeight() const override
Returns the height of the image in pixels.
static std::shared_ptr< RecenterImage< T > > create(Args &&... args)
std::shared_ptr< ImageChunk< T > > getChunk(int x, int y, int width, int height) const override
RecenterImage(std::shared_ptr< const Image< T > > img, const PixelCoordinate &new_center)
int getWidth() const override
Returns the width of the image in pixels.
static std::shared_ptr< UniversalImageChunk< T > > create(Args &&... args)
Definition ImageChunk.h:144
T forward(T... args)
A pixel coordinate made of two integers m_x and m_y.