Loading [MathJax]/extensions/tex2jax.js
LSST Applications g0b6bd0c080+a72a5dd7e6,g1182afd7b4+2a019aa3bb,g17e5ecfddb+2b8207f7de,g1d67935e3f+06cf436103,g38293774b4+ac198e9f13,g396055baef+6a2097e274,g3b44f30a73+6611e0205b,g480783c3b1+98f8679e14,g48ccf36440+89c08d0516,g4b93dc025c+98f8679e14,g5c4744a4d9+a302e8c7f0,g613e996a0d+e1c447f2e0,g6c8d09e9e7+25247a063c,g7271f0639c+98f8679e14,g7a9cd813b8+124095ede6,g9d27549199+a302e8c7f0,ga1cf026fa3+ac198e9f13,ga32aa97882+7403ac30ac,ga786bb30fb+7a139211af,gaa63f70f4e+9994eb9896,gabf319e997+ade567573c,gba47b54d5d+94dc90c3ea,gbec6a3398f+06cf436103,gc6308e37c7+07dd123edb,gc655b1545f+ade567573c,gcc9029db3c+ab229f5caf,gd01420fc67+06cf436103,gd877ba84e5+06cf436103,gdb4cecd868+6f279b5b48,ge2d134c3d5+cc4dbb2e3f,ge448b5faa6+86d1ceac1d,gecc7e12556+98f8679e14,gf3ee170dca+25247a063c,gf4ac96e456+ade567573c,gf9f5ea5b4d+ac198e9f13,gff490e6085+8c2580be5c,w.2022.27
LSST Data Management Base Package
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
estimateBackground.py
1#!/usr/bin/env python
2
3#
4# This file is part of afw.
5#
6# Developed for the LSST Data Management System.
7# This product includes software developed by the LSST Project
8# (https://www.lsst.org).
9# See the COPYRIGHT file at the top-level directory of this distribution
10# for details of code ownership.
11#
12# This program is free software: you can redistribute it and/or modify
13# it under the terms of the GNU General Public License as published by
14# the Free Software Foundation, either version 3 of the License, or
15# (at your option) any later version.
16#
17# This program is distributed in the hope that it will be useful,
18# but WITHOUT ANY WARRANTY; without even the implied warranty of
19# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20# GNU General Public License for more details.
21#
22# You should have received a copy of the GNU General Public License
23# along with this program. If not, see <https://www.gnu.org/licenses/>.
24#
25
26import os
27import lsst.utils
28import lsst.afw.image as afwImage
29import lsst.afw.math as afwMath
30import lsst.afw.display as afwDisplay
31
32try:
33 display
34except NameError:
35 display = not False
36
37afwDisplay.setDefaultMaskTransparency(75)
38
39
40
41
42def getImage():
43 imagePath = os.path.join(lsst.utils.getPackageDir("afwdata"),
44 "DC3a-Sim", "sci", "v5-e0", "v5-e0-c011-a00.sci.fits")
45 return afwImage.MaskedImageF(imagePath)
46
47
48def simpleBackground(image):
49 binsize = 128
50 nx = int(image.getWidth()/binsize) + 1
51 ny = int(image.getHeight()/binsize) + 1
52 bctrl = afwMath.BackgroundControl(nx, ny)
53
54 bkgd = afwMath.makeBackground(image, bctrl)
55
56 image -= bkgd.getImageF(afwMath.Interpolate.NATURAL_SPLINE)
57
58 return bkgd
59
60
61def complexBackground(image):
62 MaskPixel = afwImage.MaskPixel
63 binsize = 128
64 nx = int(image.getWidth()/binsize) + 1
65 ny = int(image.getHeight()/binsize) + 1
66
68 sctrl.setNumSigmaClip(3)
69 sctrl.setNumIter(4)
70 sctrl.setAndMask(afwImage.Mask[MaskPixel].getPlaneBitMask(["INTRP",
71 "EDGE"]))
72 sctrl.setNoGoodPixelsMask(afwImage.Mask[MaskPixel].getPlaneBitMask("BAD"))
73 sctrl.setNanSafe(True)
74 if False:
75 sctrl.setWeighted(True)
76 sctrl.setCalcErrorFromInputVariance(True)
77
78 bctrl = afwMath.BackgroundControl(nx, ny, sctrl, afwMath.MEANCLIP)
79
80 bkgd = afwMath.makeBackground(image, bctrl)
81
82 statsImage = bkgd.getStatsImage()
83 afwDisplay.Display(frame=3).mtv(statsImage.getVariance(), title="statsImage Variance")
84
85 return bkgd
86
87
88def main():
89 image = getImage()
90
91 if display:
92 afwDisplay.Display(frame=0).mtv(image, title="Image")
93
94 bkgd = simpleBackground(image)
95 image = getImage()
96 bkgd = complexBackground(image)
97
98 if display:
99 afwDisplay.Display(frame=1).mtv(image, title="image")
100 afwDisplay.Display(frame=2).mtv(bkgd.getStatsImage(), title="background")
101
102 order = 2
104 afwMath.ApproximateControl.CHEBYSHEV, order, order)
105 approx = bkgd.getApproximate(actrl)
106
107 approx.getImage()
108 approx.getMaskedImage()
109 approx.getImage(order - 1)
110
111
112
113if __name__ == '__main__':
114 main()
Represent a 2-dimensional array of bitmask pixels.
Definition: Mask.h:77
Control how to make an approximation.
Definition: Approximate.h:48
Pass parameters to a Background object.
Definition: Background.h:56
Pass parameters to a Statistics object.
Definition: Statistics.h:92
def mtv(data, frame=None, title="", wcs=None, *args, **kwargs)
Definition: ds9.py:92
Backwards-compatibility support for depersisting the old Calib (FluxMag0/FluxMag0Err) objects.
std::shared_ptr< Background > makeBackground(ImageT const &img, BackgroundControl const &bgCtrl)
A convenience function that uses function overloading to make the correct type of Background.
Definition: Background.h:526