38 namespace ex = pex::exceptions;
 
   62     bool const haveDefault = !
std::isnan(defaultValue);
 
   69         } 
else if (haveDefault) {
 
   79 template <
typename ImageT>
 
   92     for (
int iX = 0; iX < nxSample; ++iX) {
 
   93         for (
int iY = 0; iY < nySample; ++iY) {
 
   94             ImageT subimg = ImageT(img,
 
  102             im(iX, iY) = res.first;
 
  103             var(iX, iY) = res.second;
 
  109         : 
Background(imageBBox, statsImage.getWidth(), statsImage.getHeight()), _statsImage(statsImage) {}
 
  117     _gridColumns[iX].
resize(height);
 
  127     cullNan(
_ycen, _grid, ycenTmp, gridTmp);
 
  133         switch (undersampleStyle) {
 
  138                 if (gridTmp.
empty()) {
 
  151                         e, 
"The BackgroundControl UndersampleStyle INCREASE_NXNYSAMPLE is not supported.");
 
  155                                                      "UndersampleStyle %d is not defined.") %
 
  164     for (
int iY = 0; iY < height; ++iY) {
 
  165         _gridColumns[iX][iY] = intobj->interpolate(ypix[iY]);
 
  170     _statsImage += delta;
 
  175     _statsImage -= delta;
 
  179 template <
typename PixelT>
 
  188                 str(
boost::format(
"BBox (%d:%d,%d:%d) out of range (%d:%d,%d:%d)") % 
bbox.getMinX() %
 
  192     int const nxSample = _statsImage.
getWidth();
 
  193     int const nySample = _statsImage.
getHeight();
 
  212     switch (undersampleStyle) {
 
  214             if (isXundersampled && isYundersampled) {
 
  217                         "nxSample and nySample have too few points for requested interpolation style.");
 
  218             } 
else if (isXundersampled) {
 
  220                                   "nxSample has too few points for requested interpolation style.");
 
  221             } 
else if (isYundersampled) {
 
  223                                   "nySample has too few points for requested interpolation style.");
 
  227             if (isXundersampled || isYundersampled) {
 
  230                 interpStyle = (nxSample < nySample) ? xStyle : yStyle;
 
  235             if (isXundersampled || isYundersampled) {
 
  238                         "The BackgroundControl UndersampleStyle INCREASE_NXNYSAMPLE is not supported.");
 
  244                                                 "UndersampleStyle %d is not defined.") %
 
  262     for (
int iY = 0; iY < height; ++iY) {
 
  266     _gridColumns.
resize(width);
 
  267     for (
int iX = 0; iX < nxSample; ++iX) {
 
  268         _setGridColumns(interpStyle, undersampleStyle, iX, ypix);
 
  287     for (
int y = 0, iY = bboxOff.getY(); 
y < 
bbox.getHeight(); ++
y, ++iY) {
 
  290         for (
int iX = 0; iX < nxSample; iX++) {
 
  291             bg_x[iX] = 
static_cast<double>(_gridColumns[iX][iY]);
 
  293         cullNan(
_xcen, bg_x, xcenTmp, bgTmp, defaultValue);
 
  298         } 
catch (pex::exceptions::OutOfRangeError& e) {
 
  299             switch (undersampleStyle) {
 
  305                         xcenTmp.push_back(0);
 
  306                         bgTmp.push_back(defaultValue);
 
  317                             "The BackgroundControl UndersampleStyle INCREASE_NXNYSAMPLE is not supported.");
 
  321                                                          "UndersampleStyle %d is not defined.") %
 
  331         for (
int iX = bboxOff.getX(), 
x = 0; 
x < 
bbox.getWidth(); ++iX, ++
x) {
 
  332             (*bg)(
x, 
y) = 
static_cast<PixelT>(intobj->interpolate(iX));
 
  335     bg->setXY0(
bbox.getMin());
 
  340 template <
typename PixelT>
 
  342         ApproximateControl 
const& actrl,        
 
  354 #define CREATE_BACKGROUND(m, v, TYPE)                                                                    \ 
  355     template BackgroundMI::BackgroundMI(image::Image<TYPE> const& img, BackgroundControl const& bgCtrl); \ 
  356     template BackgroundMI::BackgroundMI(image::MaskedImage<TYPE> const& img,                             \ 
  357                                         BackgroundControl const& bgCtrl);                                \ 
  358     std::shared_ptr<image::Image<TYPE>> BackgroundMI::_getImage(                                         \ 
  359             lsst::geom::Box2I const& bbox,                                                               \ 
  360             Interpolate::Style const interpStyle,                        \ 
  361             UndersampleStyle const undersampleStyle,          \ 
  364         return BackgroundMI::doGetImage<TYPE>(bbox, interpStyle, undersampleStyle);                      \ 
  367 #define CREATE_getApproximate(m, v, TYPE)                                                        \ 
  368     std::shared_ptr<Approximate<TYPE>> BackgroundMI::_getApproximate(                            \ 
  369             ApproximateControl const& actrl,                            \ 
  370             UndersampleStyle const undersampleStyle,  \ 
  373         return BackgroundMI::doGetApproximate<TYPE>(actrl, undersampleStyle);                    \ 
#define LSST_makeBackground_getApproximate_types
 
#define LSST_makeBackground_getImage_types
 
#define LSST_EXCEPT_ADD(e, m)
Add the current location and a message to an existing exception before rethrowing it.
 
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
 
y_iterator col_begin(int x) const
Return an y_iterator to the start of the y'th row.
 
y_iterator col_end(int x) const
Return an y_iterator to the start of the y'th row.
 
A class to represent a 2-dimensional array of pixels.
 
int getHeight() const
Return the number of rows in the image.
 
int getWidth() const
Return the number of columns in the image.
 
VariancePtr getVariance() const
Return a (shared_ptr to) the MaskedImage's variance.
 
ImagePtr getImage() const
Return a (shared_ptr to) the MaskedImage's image.
 
Pass parameters to a Background object.
 
std::shared_ptr< StatisticsControl > getStatisticsControl()
 
Property getStatisticsProperty() const
 
A virtual base class to evaluate image background levels.
 
std::vector< double > _ycen
y center ...
 
std::vector< double > _xcen
x center pix coords of sub images
 
std::vector< int > _xsize
x size of sub images
 
lsst::geom::Box2I _imgBBox
size and origin of input image
 
std::vector< int > _xorig
x origin pix coords of sub images
 
UndersampleStyle _asUsedUndersampleStyle
the undersampleStyle we actually used
 
std::vector< int > _ysize
y size ...
 
float InternalPixelT
type used for any internal images, and returned by getApproximate
 
std::vector< int > _yorig
y origin ...
 
Interpolate::Style _asUsedInterpStyle
the style we actually used
 
std::shared_ptr< BackgroundControl > _bctrl
control info set by user.
 
A class to evaluate image background levels.
 
BackgroundMI & operator-=(float const delta) override
Subtract a scalar from the Background (equivalent to subtracting a constant from the original image)
 
BackgroundMI & operator+=(float const delta) override
Add a scalar to the Background (equivalent to adding a constant to the original image)
 
BackgroundMI(ImageT const &img, BackgroundControl const &bgCtrl)
Constructor for BackgroundMI.
 
Value getResult(Property const prop=NOTHING) const
Return the value and error in the specified statistic (e.g.
 
An integer coordinate rectangle.
 
int getMinY() const noexcept
 
int getHeight() const noexcept
 
Point2I const getMin() const noexcept
 
int getMinX() const noexcept
 
int getWidth() const noexcept
 
int getMaxX() const noexcept
 
bool contains(Point2I const &point) const noexcept
Return true if the box contains the point.
 
int getMaxY() const noexcept
 
Extent2I const getDimensions() const noexcept
 
Provides consistent interface for LSST exceptions.
 
Reports invalid arguments.
 
Reports attempts to exceed implementation-defined length limits for some classes.
 
Reports attempts to access elements outside a valid range of indices.
 
Backwards-compatibility support for depersisting the old Calib (FluxMag0/FluxMag0Err) objects.
 
Interpolate::Style lookupMaxInterpStyle(int const n)
Get the highest order Interpolation::Style available for 'n' points.
 
Statistics makeStatistics(lsst::afw::image::Image< Pixel > const &img, lsst::afw::image::Mask< image::MaskPixel > const &msk, int const flags, StatisticsControl const &sctrl=StatisticsControl())
Handle a watered-down front-end to the constructor (no variance)
 
@ ERRORS
Include errors of requested quantities.
 
int lookupMinInterpPoints(Interpolate::Style const style)
Get the minimum number of points needed to use the requested interpolation style.
 
std::shared_ptr< Interpolate > makeInterpolate(std::vector< double > const &x, std::vector< double > const &y, Interpolate::Style const style=Interpolate::AKIMA_SPLINE)
A factory function to make Interpolate objects.
 
std::shared_ptr< Approximate< PixelT > > makeApproximate(std::vector< double > const &x, std::vector< double > const &y, image::MaskedImage< PixelT > const &im, lsst::geom::Box2I const &bbox, ApproximateControl const &ctrl)
Construct a new Approximate object, inferring the type from the type of the given MaskedImage.
 
BOOST_PP_SEQ_FOR_EACH(INSTANTIATE_COLUMNVIEW_SCALAR, _, BOOST_PP_TUPLE_TO_SEQ(AFW_TABLE_SCALAR_FIELD_TYPE_N, AFW_TABLE_SCALAR_FIELD_TYPE_TUPLE)) BOOST_PP_SEQ_FOR_EACH(INSTANTIATE_COLUMNVIEW_ARRAY
 
def format(config, name=None, writeSourceLine=True, prefix="", verbose=False)
 
A base class for image defects.