From e7fb03241738f14d157298b686d0988d91bfb8e3 Mon Sep 17 00:00:00 2001 From: Emmanuel Bertin Date: Mon, 8 Jan 2018 17:28:50 +0100 Subject: [PATCH] Doc: Added background modeling section. --- doc/src/Background.rst | 87 +++++++++++++++++++++++++++++++++ doc/src/figures/modevsmean.pdf | Bin 0 -> 27966 bytes doc/src/figures/modevsmean.svg | 16 ++++++ doc/src/index.rst | 1 + doc/src/keys.rst | 6 +++ doc/src/references.bib | 53 ++++++++++++++++++++ 6 files changed, 163 insertions(+) create mode 100644 doc/src/Background.rst create mode 100644 doc/src/figures/modevsmean.pdf create mode 100644 doc/src/figures/modevsmean.svg diff --git a/doc/src/Background.rst b/doc/src/Background.rst new file mode 100644 index 0000000..e9e159d --- /dev/null +++ b/doc/src/Background.rst @@ -0,0 +1,87 @@ +.. File Background.rst + +.. include:: global.rst + +Modeling the background +======================= + +On linear detectors, the value measured at each pixel is the sum of a "background" signal and light coming from the sources of interest. +To be able to detect the faintest objects and make accurate measurements, |SExtractor| needs first computing a precise estimate of the background level at any position of the image: a *background map*. +Strictly speaking, there should be one background map per source, that is, what would the image look like if that very source was missing. +But, at least for detection, one can start by assuming that most discrete sources do not overlap too severely — which is generally the case for high galactic latitude fields —, and that the background varies smoothly across the field. + +Background estimation +--------------------- + +To compute the background map, |SExtractor| makes a first pass through the pixel data, estimating the local background in each mesh of a rectangular grid that covers the whole frame. +The background estimator is a combination of :math:`\kappa\,\sigma` clipping and mode estimation, similar to Stetson’s |DAOPHOT|_ program :cite:`1987PASP_99_191S,1992ASPC_23_90D`. + +Briefly, the local background histogram is clipped iteratively until convergence at :math:`\pm 3\sigma` around its median. The mode of the histogram is estimated using: + +.. math:: + :label: sexbackmode + + \mbox{Mode} = 2.5 \times \mbox{Median} - 1.5 \times \mbox{Mean}. + +Using simulated images, the expression above was found more accurate with clipped distributions :cite:1996AAS_117_393B than the usual approximation (e.g., :cite:`stuart2009kendall`): + +.. math:: + :label: ksbackmode + + \mbox{Mode} = 3 \times \mbox{Median} - 2 \times \mbox{Mean}. + +:numref:`fig_modevsmean` shows that the mode estimation in :eq:`sexbackmode` is considerably less affected by source crowding than a simple clipped mean :cite:`1981AJ_86_476J,1987AA_183_177I` but it is :math:`\approx 30\%` noisier. +Obviously :eq:`sexbackmode` is not valid for any distribution; |SExtractor| falls back to a simple median for estimating the local background value if the mode and the median disagree by more than 30%. + +.. _fig_modevsmean: + +.. figure:: figures/modevsmean.* + :figwidth: 100% + :align: center + + Simulations of :math:`32\times32` pixels background meshes contamined by random Gaussian profiles. + The true background lies at 0 ADUs. + While being a bit noisier, the clipped "mode" gives a more robust estimate than the clipped mean in crowded regions. + +Background map +-------------- + +Once the grid is set up, a median filter can be applied to suppress possible local overestimations due to bright stars. +The final background map is simply a (natural) bicubic-spline interpolation between the meshes of the grid. +Median filtering helps reducing possible ringing effects of the bicubic-spline around bright features. + +In parallel with the making of the background map, an *RMS background map*, that is, a map of the background noise standard deviation in the image is produced. +It may be used as an internal weight map if the ``WEIGHT_TYPE`` configuration parameter is to ``BACKGROUND`` (see :ref:`weight-map_format`). + +Configuration and tuning +------------------------ + +.. note:: + All background configuration parameters also affect background-RMS maps. + +The choice of the mesh size ``BACK_SIZE`` is very important. +If it is too small, the background estimation is affected by the presence of +objects and random noise. +Most importantly, part of the flux of the most extended objects can be absorbed into the background map. +If the mesh size is too large, it cannot reproduce the small scale variations of the background. +Therefore a good compromise must be found by the user. +Typically, for reasonably sampled images, a width [#recmesh]_ of 32 to 512 pixels works well. + +The user has some control over background map filtering by specifying the size of the median filter ``BACK_FILTERSIZE``. +A width and height of 1 means that no filtering is applied to the background grid. +A :math:`3\times3` filtering is sufficient in most cases. +Larger dimensions may occasionally be used to compensate for small background mesh sizes, or in the presence of large image artifacts. +In some specific cases it is desirable to median-filter only background meshes that have values exceeding some threshold above the filtered value. +This differential threshold is set by the ``BACK_FILTERTHRESH`` parameter, in ADUs. + +By default, the computed background maps are automatically subtracted from input images. +However there are some situations where it is more appropriate to subtract a *constant* from the image (e.g., images with strongly non-Gaussian background noise |pdf|\ s). +The ``BACK_TYPE`` configuration parameter (set to ``AUTO`` by default) may be switched to ``MANUAL`` to force the value specified by the ``BACK_VALUE`` parameter to be subtracted from the input image, instead of the background map. ``BACK_VALUE`` is ``0`` by default. + +Computing cost +-------------- + +The background estimation operation is generally |I/O|\ -bound, unless the image file already resides in the disk cache. + +.. [#recmesh] + It is possible to specify rectangular background meshes, although it is advised to use square ones, except in special cases (background varying rapidly along the x or y axis). diff --git a/doc/src/figures/modevsmean.pdf b/doc/src/figures/modevsmean.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d41ec251b1c281e5ff559345dc09a51b8fbfb503 GIT binary patch literal 27966 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�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 +-10 +-5 +0 +5 +10 +0 +5 +10 +15 +20 +25 +30 +Clipped Mode (ADU) +Clipped Mean (ADU) + diff --git a/doc/src/index.rst b/doc/src/index.rst index 99a31c5..802cabf 100644 --- a/doc/src/index.rst +++ b/doc/src/index.rst @@ -20,6 +20,7 @@ Contents Using Config Param + Background Weighting Flagging Measurements diff --git a/doc/src/keys.rst b/doc/src/keys.rst index d8afefa..abbabe8 100644 --- a/doc/src/keys.rst +++ b/doc/src/keys.rst @@ -1,6 +1,9 @@ .. |ATLAS| replace:: :program:`ATLAS` .. _ATLAS: http://math-atlas.sourceforge.net +.. |DAOPHOT| replace:: :program:`DAOPHOT` +.. _DAOPHOT: http://ascl.net/phpBB3/viewtopic.php?t=23410 + .. |.dmg| replace:: :file:`.dmg` .. _.dmg: https://en.wikipedia.org/wiki/Apple_Disk_Image @@ -22,6 +25,9 @@ .. |Intel| replace:: Intel\ :sup:`®`\ .. _Intel: http://intel.com +.. |I/O| replace:: :abbr:`I/O (Input/Output)` +.. _I/O: https://en.wikipedia.org/wiki/Input/output + .. |LevMar| replace:: :program:`LevMar` .. _LevMar: http://users.ics.forth.gr/~lourakis/levmar diff --git a/doc/src/references.bib b/doc/src/references.bib index c66c5b2..9ff01a2 100644 --- a/doc/src/references.bib +++ b/doc/src/references.bib @@ -184,6 +184,20 @@ archivePrefix = "arXiv", adsnote = {Provided by the SAO/NASA Astrophysics Data System} } +@ARTICLE{1981AJ_86_476J, + author = {{Jarvis}, J.~F. and {Tyson}, J.~A.}, + title = "{FOCAS - Faint Object Classification and Analysis System}", + journal = {AJ}, + keywords = {Astronomical Catalogs, Astronomical Photography, Celestial Bodies, Image Resolution, Systems Analysis, Classifications, Digital Systems, Galaxies, Magnitude, Pattern Recognition, Photographic Plates, Stars}, + year = 1981, + month = mar, + volume = 86, + pages = {476-495}, + doi = {10.1086/112907}, + adsurl = {http://adsabs.harvard.edu/abs/1981AJ.....86..476J}, + adsnote = {Provided by the SAO/NASA Astrophysics Data System} +} + @ARTICLE{2012MNRAS_427_2711K, author = {{Kacprzak}, T. and {Zuntz}, J. and {Rowe}, B. and {Bridle}, S. and {Refregier}, A. and {Amara}, A. and {Voigt}, L. and {Hirsch}, M.}, title = "{Measurement and calibration of noise bias in weak lensing galaxy shape estimation}", @@ -335,6 +349,20 @@ ISSN={1045-9227}, month={Sep} } +@ARTICLE{1987PASP_99_191S, + author = {{Stetson}, P.~B.}, + title = "{DAOPHOT - A computer program for crowded-field stellar photometry}", + journal = {PASP}, + keywords = {Algorithms, Astronomical Photometry, Computer Programs, Charge Coupled Devices, Color-Magnitude Diagram, Magellanic Clouds, Point Spread Functions, Television Cameras}, + year = 1987, + month = mar, + volume = 99, + pages = {191-222}, + doi = {10.1086/131977}, + adsurl = {http://adsabs.harvard.edu/abs/1987PASP...99..191S}, + adsnote = {Provided by the SAO/NASA Astrophysics Data System} +} + @ARTICLE{2001AJ_122_1104Y, author = {{Yasuda}, N. and {Fukugita}, M. and {Narayanan}, V.~K. and {Lupton}, R.~H. and {Strateva}, I. and {Strauss}, M.~A. and {Ivezi{\'c}}, {\v Z}. and @@ -405,6 +433,19 @@ booktitle = {Astronomical Data Analysis Software and Systems (ADASS) XIII}, adsnote = {Provided by the SAO/NASA Astrophysics Data System} } +@INPROCEEDINGS{1992ASPC_23_90D, + author = {{Da Costa}, G.~S.}, + title = "{Basic Photometry Techniques}", +booktitle = {Astronomical CCD Observing and Reduction Techniques}, + year = 1992, + series = {Astronomical Society of the Pacific Conference Series}, + volume = 23, + editor = {{Howell}, S.~B.}, + pages = {90}, + adsurl = {http://adsabs.harvard.edu/abs/1992ASPC...23...90D}, + adsnote = {Provided by the SAO/NASA Astrophysics Data System} +} + @INPROCEEDINGS{2008ASPC_394_619M, author = {{Marmo}, C. and {Bertin}, E.}, title = "{MissFITS and WeightWatcher: Two Optimised Tools for Managing FITS Data.}", @@ -452,6 +493,18 @@ booktitle = {Conference on Applications of Digital Image Processing to Astronomy adsnote = {Provided by the SAO/NASA Astrophysics Data System} } +@book{stuart2009kendall, + title={Kendall's Advanced Theory of Statistics: Volume 1: Distribution Theory}, + author={Stuart, A. and Ord, K.}, + number={vol.~1~;vol.~1994}, + isbn={9780340614303}, + lccn={94188490}, + series={Kendall's Advanced Theory of Statistics}, + url={https://books.google.fr/books?id=tW18thQWJQIC}, + year={2009}, + publisher={Wiley} +} + @BOOK{1968adga_book_S, author = {{Sérsic}, J.~L.}, title = "{Atlas de Galaxias Australes}", -- GitLab