lsst.meas.algorithms
g4a7591d645+ecc601e506
Toggle main menu visibility
Loading...
Searching...
No Matches
src
CloughTocher2DInterpolatorUtils.cc
Go to the documentation of this file.
1
// -*- LSST-C++ -*-
2
/*
3
* This file is part of meas_algorithms.
4
*
5
* Developed for the LSST Data Management System.
6
* This product includes software developed by the LSST Project
7
* (https://www.lsst.org).
8
* See the COPYRIGHT file at the top-level directory of this distribution
9
* for details of code ownership.
10
*
11
* This program is free software: you can redistribute it and/or modify
12
* it under the terms of the GNU General Public License as published by
13
* the Free Software Foundation, either version 3 of the License, or
14
* (at your option) any later version.
15
*
16
* This program is distributed in the hope that it will be useful,
17
* but WITHOUT ANY WARRANTY; without even the implied warranty of
18
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
* GNU General Public License for more details.
20
*
21
* You should have received a copy of the GNU General Public License
22
* along with this program. If not, see <https://www.gnu.org/licenses/>.
23
*/
24
31
32
#include "
lsst/afw/geom/SpanSet.h
"
33
#include "
lsst/afw/image/Image.h
"
34
#include "
lsst/afw/image/MaskedImage.h
"
35
#include "
lsst/geom/Point.h
"
36
#include "
lsst/meas/algorithms/CloughTocher2DInterpolatorUtils.h
"
37
38
namespace
lsst
{
39
namespace
meas
{
40
namespace
algorithms
{
41
42
std::pair<ndarray::Array<float, 2, 2>, ndarray::Array<float, 2, 2>>
43
CloughTocher2DInterpolatorUtils::findGoodPixelsAroundBadPixels
(
afw::image::MaskedImage<float>
const
&mimage,
44
std::vector<std::string>
const
&maskPlanes,
45
int
const
buffer) {
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
}
85
86
void
CloughTocher2DInterpolatorUtils::updateArrayFromImage
(ndarray::Array<float, 2, 2>
const
&pixelArray,
87
afw::image::Image<float>
const
&
image
) {
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
}
97
98
void
CloughTocher2DInterpolatorUtils::updateImageFromArray
(
99
afw::image::Image<float>
&
image
, ndarray::Array<float const, 2, 2>
const
&pixelArray) {
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
}
109
110
}
// namespace algorithms
111
}
// namespace meas
112
}
// namespace lsst
CloughTocher2DInterpolatorUtils.h
Provide pixel-level utilities to support CloughTocher2DInterpolator.
MaskedImage.h
Point.h
SpanSet.h
lsst::afw::geom::SpanSet::fromMask
static std::shared_ptr< geom::SpanSet > fromMask(image::Mask< T > const &mask, UnaryPredicate comparator=details::AnyBitSetFunctor< T >())
lsst::afw::image::CheckIndices
lsst::afw::image::Image
lsst::afw::image::Mask::getPlaneBitMask
static MaskPixelT getPlaneBitMask(const std::vector< std::string > &names)
lsst::afw::image::MaskedImage
lsst::afw::image::MaskedImage::getBBox
lsst::geom::Box2I getBBox(ImageOrigin const origin=PARENT) const
lsst::afw::image::MaskedImage::getMask
MaskPtr getMask() const
lsst::afw::image::MaskedImage::getImage
ImagePtr getImage() const
lsst::meas::algorithms::CloughTocher2DInterpolatorUtils::updateArrayFromImage
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.
Definition
CloughTocher2DInterpolatorUtils.cc:86
lsst::meas::algorithms::CloughTocher2DInterpolatorUtils::findGoodPixelsAroundBadPixels
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 ...
Definition
CloughTocher2DInterpolatorUtils.cc:43
lsst::meas::algorithms::CloughTocher2DInterpolatorUtils::updateImageFromArray
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.
Definition
CloughTocher2DInterpolatorUtils.cc:98
Image.h
std::make_pair
T make_pair(T... args)
lsst::afw::image
lsst::afw::image::MaskPixel
std::int32_t MaskPixel
lsst::geom::Point2I
Point< int, 2 > Point2I
lsst::meas::algorithms
Definition
mainpage.dox:13
lsst::meas
lsst
std::vector
Generated on
for lsst.meas.algorithms by
1.17.0