SkyCruncher

Note · Under the hood

The light map: one map of the sky's light that every frame is checked against

Before measuring a star on a frame, it helps to know what light should be there: the star, its neighbors, a galaxy behind it, a nebula's glow. This Note explains the map that holds that light once for the whole sky, how a frame reads it, and why that makes frames from different telescopes comparable.

Updated

A thin line beside a passage says how far its claim is proven: published, prototyped, planned, illustrative. Colored numbers carry the same mark. A passage with no line is stated. How claims are marked.

What the light map is

It is an all-sky brightness map on HEALPix's equal-area grid: the sky cut into cells of equal area, with a layer for each kind of light. One layer holds stars, one galaxies, one the glow of nebulae. SkyCruncher's app calls this the light map. The app is in development, and the map is built in my test bench and in the app's new pipeline, not in anything that has shipped. (prototyped)

The map holds only what the sky holds: where each source is and how bright it is. Nothing about a telescope is stored in it: no focal length, no pixel size, no star width, no exposure time. Those belong to each frame, and a frame brings them when it asks the map a question. (prototyped)

The idea started as a question about speed. Working out how much of a star's light really belongs to its neighbors is a weighted sum over nearby stars, which is the kind of sum a graphics card is built for. Storing the sky's light once, and letting each frame ask the map what lands on it, replaced numbers that had been worked out ahead of time for one assumed star width.

Why the sky is cut into equal-area cells

The obvious grid for the sky is the one on a globe: lines of right ascension and declination, like longitude and latitude. Its cells are not the same size. They shrink toward the poles, where the lines meet, so a cell near the celestial pole covers a sliver of the sky a cell at the equator covers. Any count or brightness per cell then means something different depending on where on the sky you are.

HEALPix (Hierarchical Equal Area isoLatitude Pixelization, Górski and colleagues, 2005) fixes that. It cuts the whole sphere into 12 base cells of exactly equal area, and every cell splits into four children of equal area again, as many times as you like. Maps of the cosmic microwave background from the WMAP and Planck satellites use it, and Gaia, the European Space Agency's star-mapping mission, builds a HEALPix cell number into every star's catalog ID. (published)

Each round of splitting is one order. Because every cell splits into exactly four, the cells nest: in HEALPix's nested numbering, the children of cell n are numbered 4n to 4n + 3. Zooming in or out is arithmetic on the cell number, and the light in a cell is exactly the light in its four children added up. That nesting makes the map a tree, so a question can stop at whatever level of detail it needs.

OrderCells over the whole skyTypical cell width
012about 59°
649,152about 55 arcmin
1012,582,912about 3.4 arcmin
12201,326,592about 52 arcsec
1651,539,607,552about 3.2 arcsec

Computed from the grid's definition: the sky's 41,253 square degrees shared among 12 × 4order cells; the width is the square root of one cell's area. An arcminute is 1/60 of a degree and an arcsecond 1/60 of an arcminute.

For scale: the full Moon is about 31 arcminutes across, so an order-10 cell is about a ninth of the Moon's width, and an order-16 cell is about the size of one Seestar pixel (2.3 to 4.0 arcsec, by model, from the models' specs).

One HEALPix cell split into children A diamond-shaped cell divided into four equal children. One child is divided again into four, and one of those is divided once more, to show that the grid only needs to be fine where the sky has detail. a cell 4 children finer finer only where it's needed A frame laid over the cells A patch of diamond-shaped cells with a tilted rectangle on top standing for one frame. Stars of different brightness sit inside and around it. One bright star has a dashed circle showing how far its light spreads, and the circle reaches a fainter neighbor. one frame the cells stay put; frames move
(illustrative) Drawn by hand, not real cells or a real frame. In the first panel, one cell splits into four equal children, and a child splits again only where the sky has detail worth keeping. In the second, a frame lands on the fixed cells at its own position and angle. The dashed circle is how far one bright star's light spreads at that frame's sharpness; it reaches a fainter neighbor, whose measurement would borrow some of that light.

What the map holds in each cell

Every layer is filed under the same nested cell numbers, so "what is in this patch of sky" is one lookup per layer. (prototyped)

What the map leaves out on purpose: the sky's own glow. Light pollution, moonlight, twilight and haze change every night and from place to place, so they belong to each frame, not to the sky.

Every layer has to be on the same grid in the same sky coordinates. Some published all-sky maps come on HEALPix cells in galactic coordinates, which line up with the Milky Way instead of the celestial equator. The cell numbers look the same, but they point at different sky, so such a map is resampled onto the light map's cells once, when the map is built.

How one frame's stars land on the map

A frame brings three things: its pose (where it points, how it is turned, and its scale), its lens model (how its optics bend straight lines on the sky toward the corners), and its star shape (how its focus, the air and its tracking spread a point of light, which can change across the frame). With those, the map can draw what the frame should have recorded, before anything on the frame is measured. (prototyped)

  1. Take the cells under the frame, plus a margin, because a bright star just outside the edge still throws light in. (prototyped)
  2. Move each star from its sky position to a pixel position through the pose and the lens model. (prototyped)
  3. Spread each star's light by the frame's own star shape, and paint the galaxies and nebula glow the same way. The sum is a predicted frame: the sky's light as this telescope, on this night, should have seen it. (prototyped)

The predicted frame then does three jobs. (prototyped)

Exposure time drops out of the neighbor share. Both stars collect light for the same seconds, so the share is a ratio of two brightnesses in one frame, and in expectation the seconds cancel. A longer exposure still matters indirectly: more neighbors are detected and measured, bright ones may saturate, and a small bias stands out more as the noise falls.

How it lets frames from different nights and telescopes be compared

This is the reason for the whole design. My catalog mixes telescopes: Seestar S30, S30 Pro and S50 units, other cameras and lenses, my frames and frames the community shared. Their pixels cover different amounts of sky, their star shapes differ, and so do their nights. Comparing two of their measurements of the same star directly mixes up the star with the telescope.

The same cells also file what comes out of measuring: what each frame recorded is stored against the cells it covered, and its frame receipt records what ran and what it measured. Two people who shot the same field years apart end up filed under the same cells. (planned)

What isn't done yet

Read more

Star data: ESA/Gaia/DPAC, Gaia DR3 (CC BY-NC 3.0 IGO). HEALPix: K. M. Górski et al., 2005, The Astrophysical Journal 622, 759.