ASTRO SURVEYOR — Tutorial
Step-by-step usage + formulas

Quickstart

  1. Load ≥2 images (Drag & Drop or file picker). The app sorts frames by time.
  2. (Recommended) Click Pick reference star, then click a bright star in the canvas. Enter its catalog magnitude.
  3. Press Run. The app will align frames, detect objects, build tracks, compute photometry, and draw motion paths.
  4. Select a track to view a WISEA-style analysis record.

What the app does (pipeline)

This app is a minimal multi-frame photometry + motion tool. It runs fully in your browser.

1) Frame loading & timestamps

  • JPEG EXIF DateTimeOriginal is used if present.
  • Otherwise, the file modified time is used.
  • You can edit timestamp and exposure time in the Frames table.

2) Alignment (global drift compensation)

Each frame is aligned to frame #1 using a coarse shift search (SSD on downsampled luminance). Output is a pixel shift (dx,dy).

3) Detection (blobs)

Pixels above threshold T are grouped into connected components (8-neighborhood). Each blob gets a centroid and mean RGB.

4) Tracking

Blobs are matched across frames by nearest-neighbor with a maximum distance. The sequence is a track.

5) Photometry

With a reference star, the app computes a per-frame zero point and then object magnitudes.

6) Physics layers

  • AU anchor: compare track brightness to a 600 AU baseline.
  • Reflected-object model: predict magnitude from H, r, Δ, phase.

Photometry (counts → magnitude)

Aperture photometry

NetFlux = Sum(aperture) - Median(background) · N_aperturePixels

Flux mode: Luminance or Sum(R+G+B).

Instrumental magnitude

m_inst = -2.5 · log10( NetFlux / exposureSeconds )

Zero point & true magnitude

ZP = m_ref - m_inst(ref)
m_true(object) = m_inst(object) + ZP

AU & irradiance anchors

I(1 AU) = 1360.8 W/m²
I(r) = I(1 AU) / r²
I(600 AU) = 1360.8 / 600² ≈ 0.00378 W/m²

From 600 AU baseline to any AU

I(AU) = I(600) · (600/AU)²
Δm = -2.5 · log10( I(AU) / I(600) )
   = -5 · log10(600/AU)
m_exp(AU) = m600 + Δm

The AU anchor filter compares mag_corr to m_exp(AU) with a tolerance.

Reflected-object magnitude model

m = H + 5 · log10(r · Δ) + P(α)

Linear phase term

P(α) = β · α

Compute H from a measured track

H = m_corr - 5·log10(r·Δ) - P(α)

Tracking (motion between frames)

Alignment: SSD shift search

SSD(dx,dy) = mean( (A(x,y) - B(x-dx, y-dy))² )

Auto threshold (median + k·MAD)

T = median + k · (1.4826 · MAD)
MAD = median( |x - median(x)| )

Track matching

match if distance(p_i, p_{i+1}) ≤ MatchDist

Color / spectral heuristic

(B−V)* ≈ a·log10(R/G) + b·log10(G/B)
m_corr = m + C · (B−V)*

This is a heuristic layer for clustering (redder vs bluer). For real spectral classification you need calibrated filters/spectra.

WISEA-style inspector output

The inspector output is a structured record containing:

  • Pixel-based designation (WISEA PXx_y)
  • Time span and motion (px/s)
  • Mean magnitudes and model deltas
  • Settings snapshot for reproducibility

For a real WISEA name (WISEA Jhhmmss.ss±ddmmss.s) you need WCS (pixel → RA/Dec).

Troubleshooting & tips

No tracks

  • Enable Show all tracks (debug).
  • Lower Min frames / Min disp.
  • Reduce threshold (lower k or manual T).
  • Increase Match dist for faster motion.

Bad magnitudes

  • Reference star must not be saturated.
  • Radii must satisfy rOut > rIn > rAp.
  • Set correct exposure times (or keep 1.0 for relative results).

Glossary

  • AU: Astronomical Unit (Earth–Sun distance).
  • Irradiance: W/m² arriving at a surface.
  • Flux: summed pixel intensity in an aperture.
  • Magnitude: logarithmic brightness scale.
  • ZP: zero point calibration offset.
  • H: absolute magnitude (size+albedo proxy).
  • WCS: pixel → sky coordinate mapping.