LSST Applications g1cfbe01172+01aa18f939,g20cdd03214+31e6b93548,g28da252d5a+ea8665a95b,g2bbee38e9b+9ec6cc348d,g2bc492864f+9ec6cc348d,g347aa1857d+9ec6cc348d,g3a166c0a6a+9ec6cc348d,g4322eb9e3a+65eff1e020,g461a3dce89+b86e4b8053,g50ff169b8f+f991eae79d,g52b1c1532d+b86e4b8053,g607f77f49a+31e6b93548,g78056777b3+8ae2798781,g858d7b2824+31e6b93548,g8cd86fa7b1+4851e61ca4,g9ddcbc5298+f24b38b85a,ga1e77700b3+3309dba821,gae0086650b+b86e4b8053,gb0e22166c9+6076c0b52b,gbb886bcc26+dccb771098,gbd462c55f0+dc07f8e65d,gc0c51c7ec2+31e6b93548,gc120e1dc64+a417ce3171,gc28159a63d+9ec6cc348d,gc2a6998b7e+f95f64aeae,gcdd4ae20e8+507450c4cd,gcf0d15dbbd+507450c4cd,gd1535ee943+bcf88ba65f,gd598c5cd71+66126f91fb,gdaeeff99f8+006e14e809,gdbce86181e+39d5515b1a,ge3d4d395c2+b12d4d6a95,ge79ae78c31+9ec6cc348d,gf048a9a2f4+d9c36e6b63,gfbcc870c63+ea41c4420b,w.2024.27
LSST Data Management Base Package
Loading...
Searching...
No Matches
Static Public Member Functions | List of all members
lsst::meas::algorithms::CloughTocher2DInterpolatorUtils Class Reference

This class contains static utility methods that are used by the CloughTocher2DInterpolatorTask and exists solely to provide a namespace. More...

#include <CloughTocher2DInterpolatorUtils.h>

Static Public Member Functions

static std::pair< ndarray::Array< float, 2, 2 >, ndarray::Array< float, 2, 2 > > findGoodPixelsAroundBadPixels (afw::image::MaskedImage< PixelT, afw::image::MaskPixel, afw::image::VariancePixel > const &mimage, std::vector< std::string > const &maskPlanes, int const buffer)
 Find the positions of bad pixels as defined by the masks, and also find the location and pixel value of good pixels around the bad pixels.
 
static void updateArrayFromImage (ndarray::Array< float, 2, 2 > const &pixelArray, afw::image::Image< PixelT > const &image)
 Update the values (third column) of the pixelArray from the image.
 
static void updateImageFromArray (afw::image::Image< PixelT > &image, ndarray::Array< float const, 2, 2 > const &pixelArray)
 Update the pixel values of the image from the pixelArray.
 

Detailed Description

This class contains static utility methods that are used by the CloughTocher2DInterpolatorTask and exists solely to provide a namespace.

Definition at line 44 of file CloughTocher2DInterpolatorUtils.h.

Member Function Documentation

◆ findGoodPixelsAroundBadPixels()

std::pair< ndarray::Array< float, 2, 2 >, ndarray::Array< float, 2, 2 > > lsst::meas::algorithms::CloughTocher2DInterpolatorUtils::findGoodPixelsAroundBadPixels ( afw::image::MaskedImage< PixelT, afw::image::MaskPixel, afw::image::VariancePixel > const & mimage,
std::vector< std::string > const & maskPlanes,
int const buffer )
static

Find the positions of bad pixels as defined by the masks, and also find the location and pixel value of good pixels around the bad pixels.

Parameters
[in]mimageMaskedImage to find the pixels from.
[in]maskPlanesList of mask planes to consider as bad pixels.
[in]bufferNumber of pixels to dilate the bad pixels by.
Returns
A pair of arrays, the first containing the bad pixels and the second containing the good pixels.
Note
The bad pixels array has shape (N, 3) where N is the number of bad pixels. The first column is the x coordinate, the second column is the y coordinate, and the third column is the pixel value. The good pixels array has shape (M, 3) where M is the number of good pixels and has the same format as the previous one.

Definition at line 43 of file CloughTocher2DInterpolatorUtils.cc.

45 {
46 auto bitMask = afw::image::Mask<>::getPlaneBitMask(maskPlanes);
47
48 auto badSpanSet = afw::geom::SpanSet::fromMask(
49 *mimage.getMask(), [bitMask](afw::image::MaskPixel pixel) { return bool(pixel & bitMask); });
50 ndarray::Array<float, 2, 2> badPixelArray = ndarray::allocate(badSpanSet->getArea(), 3);
51 badSpanSet->applyFunctor(
52 [](geom::Point2I pt, float &x, float &y, float &valueOut, float valueIn) {
53 x = pt.getX();
54 y = pt.getY();
55 valueOut = valueIn;
56 },
57 ndFlat(badPixelArray[ndarray::view()(0)].shallow()),
58 ndFlat(badPixelArray[ndarray::view()(1)].shallow()),
59 ndFlat(badPixelArray[ndarray::view()(2)].shallow()),
60 *mimage.getImage());
61
62 auto allSpanSet = badSpanSet->dilated(buffer, afw::geom::Stencil::BOX);
63 auto goodSpanSet = allSpanSet->intersectNot(*badSpanSet);
64 goodSpanSet = goodSpanSet->clippedTo(mimage.getBBox());
65
66 badSpanSet.reset();
67 allSpanSet.reset();
68
69 ndarray::Array<float, 2, 2> goodPixelArray = ndarray::allocate(goodSpanSet->getArea(), 3);
70 goodSpanSet->applyFunctor(
71 [](geom::Point2I pt, float &x, float &y, float &valueOut, float valueIn) {
72 x = pt.getX();
73 y = pt.getY();
74 valueOut = valueIn;
75 },
76 ndFlat(goodPixelArray[ndarray::view()(0)].shallow()),
77 ndFlat(goodPixelArray[ndarray::view()(1)].shallow()),
78 ndFlat(goodPixelArray[ndarray::view()(2)].shallow()),
79 *mimage.getImage());
80
81 goodSpanSet.reset();
82
83 return std::make_pair(badPixelArray, goodPixelArray);
84}
int y
Definition SpanSet.cc:48
static std::shared_ptr< geom::SpanSet > fromMask(image::Mask< T > const &mask, UnaryPredicate comparator=details::AnyBitSetFunctor< T >())
Create a SpanSet from a mask.
Definition SpanSet.h:644
static MaskPixelT getPlaneBitMask(const std::vector< std::string > &names)
Return the bitmask corresponding to a vector of plane names OR'd together.
Definition Mask.cc:376
T make_pair(T... args)
std::int32_t MaskPixel
default type for Masks and MaskedImage Masks
details::FlatNdGetter< T, inA, inB > ndFlat(ndarray::Array< T, inA, inB > const &array)
Marks a ndarray to be interpreted as a 1D vector when applying a functor from a SpanSet.

◆ updateArrayFromImage()

void lsst::meas::algorithms::CloughTocher2DInterpolatorUtils::updateArrayFromImage ( ndarray::Array< float, 2, 2 > const & pixelArray,
afw::image::Image< PixelT > const & image )
static

Update the values (third column) of the pixelArray from the image.

Parameters
[out]pixelArrayThe three-column array to update.
[in]imageThe image to update the pixel values from.
Note
The pixelArray is typically one of the arrays returned by findGoodPixelsAroundBadPixels.
See also
updateImageFromArray

Definition at line 86 of file CloughTocher2DInterpolatorUtils.cc.

87 {
88 afw::image::CheckIndices docheck(true);
89 auto x0 = image.getX0();
90 auto y0 = image.getY0();
91 for (auto row : pixelArray) {
92 int x = row[0] - x0;
93 int y = row[1] - y0;
94 row[2] = image(x, y, docheck);
95 }
96}
afw::table::Key< afw::table::Array< ImagePixelT > > image
int row
Definition CR.cc:145

◆ updateImageFromArray()

void lsst::meas::algorithms::CloughTocher2DInterpolatorUtils::updateImageFromArray ( afw::image::Image< PixelT > & image,
ndarray::Array< float const, 2, 2 > const & pixelArray )
static

Update the pixel values of the image from the pixelArray.

Parameters
[out]imageThe image to update.
[in]pixelArrayThe three-column array to update the pixel values from.
Note
The pixelArray is typically one of the arrays returned by findGoodPixelsAroundBadPixels.
See also
updateArrayFromImage

Definition at line 98 of file CloughTocher2DInterpolatorUtils.cc.

99 {
100 afw::image::CheckIndices docheck(true);
101 auto x0 = image.getX0();
102 auto y0 = image.getY0();
103 for (auto row : pixelArray) {
104 int x = row[0] - x0;
105 int y = row[1] - y0;
106 image(x, y, docheck) = row[2];
107 }
108}

The documentation for this class was generated from the following files: