int main() {
for (
int y = 0;
y != in.getHeight(); ++
y) {
for (ImageT::xy_locator
ptr = in.xy_at(0,
y),
end = in.xy_at(in.getWidth(),
y);
ptr !=
end;
*
ptr = ImageT::Pixel(
y, 0x1, 10);
}
}
ImageT out(in.getDimensions());
out.assign(in);
for (
int y = 1;
y != in.getHeight() - 1; ++
y) {
for (ImageT::xy_locator
ptr = in.xy_at(1,
y),
end = in.xy_at(in.getWidth() - 1,
y),
*optr =
ptr(-1, -1) + 2 *
ptr(0, -1) +
ptr(1, -1) + 2 *
ptr(-1, 0) + 4 *
ptr(0, 0) +
}
}
out2->assign(in);
using xy_loc = ImageT::const_xy_locator;
for (
int y = 1;
y != in.getHeight() - 1; ++
y) {
xy_loc dot = in.xy_at(1,
y),
end = in.xy_at(in.getWidth() - 1,
y);
xy_loc::cached_location_t nw = dot.cache_location(-1, -1);
xy_loc::cached_location_t n = dot.cache_location(0, -1);
xy_loc::cached_location_t ne = dot.cache_location(1, -1);
xy_loc::cached_location_t
w = dot.cache_location(-1, 0);
xy_loc::cached_location_t c = dot.cache_location(0, 0);
xy_loc::cached_location_t e = dot.cache_location(1, 0);
xy_loc::cached_location_t sw = dot.cache_location(-1, 1);
xy_loc::cached_location_t s = dot.cache_location(0, 1);
xy_loc::cached_location_t se = dot.cache_location(1, 1);
for (ImageT::x_iterator optr = out2->row_begin(
y) + 1; dot !=
end; ++dot.x(), ++optr) {
*optr = dot[nw] + 2 * dot[n] + dot[ne] + 2 * dot[
w] + 4 * dot[c] + 2 * dot[e] + dot[sw] +
2 * dot[s] + dot[se];
}
}
xy_loc pix11 = in.xy_at(1, 1);
xy_loc::cached_location_t nw = pix11.cache_location(-1, -1);
xy_loc::cached_location_t n = pix11.cache_location(0, -1);
xy_loc::cached_location_t ne = pix11.cache_location(1, -1);
xy_loc::cached_location_t
w = pix11.cache_location(-1, 0);
xy_loc::cached_location_t c = pix11.cache_location(0, 0);
xy_loc::cached_location_t e = pix11.cache_location(1, 0);
xy_loc::cached_location_t sw = pix11.cache_location(-1, 1);
xy_loc::cached_location_t s = pix11.cache_location(0, 1);
xy_loc::cached_location_t se = pix11.cache_location(1, 1);
for (
int y = 1;
y != in.getHeight() - 1; ++
y) {
xy_loc dot = in.xy_at(1,
y),
end = in.xy_at(in.getWidth() - 1,
y);
for (ImageT::x_iterator optr = out2->row_begin(
y) + 1; dot !=
end; ++dot.x(), ++optr) {
*optr = dot[nw] + 2 * dot[n] + dot[ne] + 2 * dot[
w] + 4 * dot[c] + 2 * dot[e] + dot[sw] +
2 * dot[s] + dot[se];
}
}
{
ImageT center = ImageT(
*out2,
image::LOCAL);
center /= 16;
}
for (
int y = 0;
y != in.getHeight(); ++
y) {
for (ImageT::xy_x_iterator
ptr = in.xy_at(0,
y).x(),
end = in.xy_at(in.getWidth(),
y).x();
ptr !=
end;
}
}
out.writeFits("foo.fits");
out2->writeFits("foo2.fits");
return 0;
}
A class to manipulate images, masks, and variance as a single object.
An integer coordinate rectangle.