Honest, regional signal-to-noise measurement — pick the structure you care about, pick a background, get a per-channel SNR of that region. No "global image SNR" lies.
Click Select Target Region. The picker opens on your active image with the auto-background box drawn in gold.
Three selection modes are available from the dropdown at the top:
Changing the drawing mode or starting a new drag clears the previous selection — you always have exactly one target region.
The automatic background is a 50×50 pixel source-free box found by scanning the image for the darkest, flattest region a safe distance (100 px by default) from the edges. The box is drawn in gold so you can see where it landed and judge whether it represents a reasonable "nothing-there" background for your target. If it landed somewhere unrepresentative (another faint nebula, a star glow, inside your region of interest), zoom out, click Find Background again (which re-runs the search), or build a more deliberate workflow around the Magnitude tool's four-quadrant verification if you need that level of control over placement.
Click Calculate SNR. The tool reads the native image (mono stays mono, RGB stays RGB — nothing is converted), masks it with your target region and the auto-placed background box, and reports per channel:
For a mono image you get one line labeled L. For an RGB image you get three lines, R, G, B. The results text area is selectable and the Copy Results button sends everything to the clipboard for pasting into a processing log.
The SNR number is a direct answer to the question "how many standard deviations above the sky background does my target sit?" A few reference points:
| SNR (linear) | dB | What it means |
|---|---|---|
| < 2 | < 3 | Buried in noise. Not reliably detectable. |
| 3 | 4.77 | Marginal detection. Visible with averaging/binning. |
| 5 | 7.0 | Rose criterion for reliable visual detection. |
| 10 | 10.0 | Clean detection. Comfortable for publication. |
| 30-50 | 14.8-17.0 | Strong signal. Fine structure visible. |
| 100+ | 20+ | Core / bright-star territory. Essentially noise-free. |
The dB value doubles for every tenfold increase in linear SNR (power ratio convention): 10× SNR is +10 dB, 100× is +20 dB. The dB axis is more convenient for comparing processing steps on log-scale structures.
The right-hand panel has a channel selector at the top and three tabs below.
A pair of overlaid histograms showing the pixel-value distribution inside the Background region (blue) and the Object region (orange), normalised to density so they're directly comparable regardless of area. The channel selector picks which plane to plot (L for mono; R, G, or B for color). The bins span from the 0.5th to 99.5th percentile of the combined data, so outliers don't crush the useful range.
What to look for:
A bar chart with per-channel SNR on the left y-axis (linear) and dB on the right y-axis (same bars, different scale). For mono images one bar; for RGB three bars (R, G, B). Fast visual comparison across channels — if your blue SNR sits well below red and green, that's a nudge toward spending more sub-exposure time in blue next session.
A cropped view of your target region (expanded by 40 px of context on each side) with the target mask drawn as a translucent red overlay and the background box as a gold tint. Serves one purpose: confirmation that the numbers you're seeing came from where you think they did. The display is autostretched for visibility — it doesn't affect the measurement, which operates on the linear pixels.
The measured SNR is only as meaningful as the background it's measured against. Three guidelines:
The math behind every number the tool reports.
The signal estimator is the median of pixel values inside the target mask:
Median is used instead of mean because real target regions almost always contain some contamination — a star within the lasso, a hot pixel residual, a diffraction spike. The mean is pulled by those outliers; the median shrugs them off, so the number you get reflects the typical brightness of your structure, not whatever the brightest hot pixel happened to be. For a well-chosen region on a smoothly-varying nebula or galaxy arm, median and mean agree to within ~1%; for a region containing even a single star the median is dramatically more honest.
The same median estimator is applied to the background region:
and the net signal above background is clamped non-negative:
The clamp exists because a region can legitimately be fainter than the background box (a dust lane in front of a nebula, for example), which would yield a negative So and a negative SNR number that doesn't mean anything useful. In that case the tool reports SNR = 0 and the right conclusion is "this region is at or below the measured sky level" — the chart will show it as absent rather than inverted.
The noise estimator is the sample standard deviation of the background pixels, using the Bessel-corrected (N-1) denominator:
Standard deviation (not MAD or any other robust estimator) is used here deliberately. In a cleanly-chosen source-free background box, the pixel-value distribution is dominated by Gaussian read-plus-shot noise, and standard deviation is the right estimator of its scale. If stars have leaked in, standard deviation will reflect that — which is correct behavior for an SNR measurement, because those stars are part of what competes with your signal in that part of the frame. A robust MAD estimator would hide the problem and give you an overconfident SNR number; the tool deliberately uses the honest estimator and leaves you to notice (via the distribution plot or the ROI preview) when your background box is dirty.
The Bessel correction (1/(N-1) rather than 1/N) is the unbiased estimator for a sample from a larger population — the usual choice when you're estimating the underlying noise distribution's spread rather than describing the exact pixel population inside the box.
The signal-to-noise ratio is reported as:
This is the ratio of the net signal (median above background) to the noise standard deviation — essentially, "how many σ above the sky is my structure?" It's the same quantity underlying the Rose criterion of visibility (SNR ≥ 5), underlying detection significance claims in astronomy ("3σ detection" means SNR = 3), and underlying every statement about faint-source photometric uncertainty.
The decibel version uses the power-ratio convention:
This gives +10 dB per factor-of-10 improvement in linear SNR. Equivalently:
which inverts the dB value back to a plain ratio. Some image-quality tools use the amplitude-ratio convention 20 log10(SNR) instead; that convention doubles every dB number compared to this tool, so if you're comparing SNR_dB from another tool, verify which convention it uses before concluding anything about relative quality.
The underlying truth every pixel's SNR obeys is:
Both the signal and the noise are properties of a region, not of the whole frame. In a deep-sky frame the quantities take on wildly different values depending on where you look:
A single-number "global SNR" that collapses this to one value will always be dominated by whichever brightness regime occupies the largest number of pixels in the frame — usually the background, sometimes a bright extended object. The number it produces tracks how bright your frame is on average, which is not what you want to know; you want to know how well-detected the structure you care about is.
By asking you to pick the region and the background, this tool keeps both terms of the SNR definition under your control. The number it returns is the real-and-specific SNR of the thing you asked about, measured against a specific reference. That's the only kind of SNR number that means anything.
Each channel is treated as an independent image. A mono image yields one SNR number labeled L; an RGB image yields three independent SNR numbers labeled R, G, B. The tool does not combine channels into a single "colour SNR" (no such concept exists cleanly — color SNR depends on luminance weighting choices and on perceptual-vs-scientific intent). You get three honest numbers, one per channel, and compare them yourself.
For narrowband palettes where each channel is a different line (SHO, HOO, etc.), per-channel SNR is directly interpretable as the detection quality of each emission line and feeds straight into integration-time planning.
For reference, in the Poisson/Gaussian noise regime that governs deep-sky stacks, SNR grows with the square root of the number of co-added subs:
So doubling your integration gives a √2 ≈ 1.41× SNR improvement (+1.5 dB); quadrupling it doubles the SNR (+3 dB). If you measure SNR on two stacks of the same object with the same cropping and your observed ratio falls meaningfully short of this prediction, something is wrong with the longer stack — bad calibration, drifting guiding, poor rejection of outliers in integration, or a gradient contaminating one of the nights. This tool is the right instrument to diagnose that.
auto_rect_box utility (the same source-free scanner that serves the Background Neutralization and Magnitude tools), and the display stretching uses SASpro's canonical stretch_color_image pipeline (preview-only; never baked into measurements).