Star Mask¶
Purpose and expected result¶
Star Mask finds the stars of one image, or of every sequence frame, with AfterNight's fitted star detector and paints them into a new single-channel grayscale mask. Each accepted star becomes a smooth radial profile or a solid ellipse.
The expected result is a same-size mask named <target> - STARMASK, with white
or bright areas over accepted stars and black elsewhere. The source is not
modified. This is a detector-driven mask generator; it does not read a saved
star list.
At a glance¶
| Item | Current behavior |
|---|---|
| Menu path | Process > Mask Generation > Star Mask |
| Enabled when | An image or sequence is active; a launch is refused with a warning when another Star Mask window is already attached to it or an attached process holds exclusive access |
| Inputs | One grayscale or RGB (with or without alpha) still or sequence in any integer or floating representation. Stars are found in an RGB image's green channel, or in its CIE L* with Use Lightness. A filter-array (mosaic) image that has not been demosaiced is refused; configured sequence auto-debayer can supply RGB frames |
| Outputs | One new same-size, single-channel grayscale mask still or sequence in the target's representation; Take snapshot creates an auxiliary still; source pixels are unchanged |
| Recommended image state | A calibrated linear or consistently prepared star field; clipping, strong gradients, hot pixels, blur, and prior nonlinear processing change detection and measured widths |
| Preview support | Asynchronous preview of the mask over the whole image or an initial centered 600×600 Preview area, original/result switching, snapshot, display-channel selection, and display-only Linear/Autostretch |
| Sequence support | Yes; one captured parameter set is applied frame by frame into a new temporary sequence, with frame progress and Cancel |
| Mask support | No. An active image mask is deliberately ignored because this process creates a mask rather than blending a correction through one |
| External dependencies | None; the detector and the mask painter are built into AfterNight |
Before you start¶
- Use a calibrated image with representative focus and a controlled background. Hot pixels, noise peaks, saturated cores, gradients, and stretched halos can be accepted as stars.
- Match Radius to the stars: it is half the width of the box a star must be
the brightest point of. The searched picture, or the Preview area, must be
more than
4 x Radius + 8pixels wide and tall, or the run is refused; at the default Radius5that is more than 28 pixels. - Decide whether the mask needs graded profiles or hard selection. Leave Shaped Areas checked for radial falloffs; uncheck it for solid ellipses. Growth, size, and Star Shape controls do nothing without Shaped Areas.
- For an RGB target, stars are found in the green channel by default; enable Use Lightness to search CIE L* instead.
- Keep the preview Display Mode identical when comparing settings. Autostretch changes only presentation, not mask samples.
Procedure¶
- Select the target and open Process > Mask Generation > Star Mask.
- Start from the defaults: Radius
5, Threshold1.00, Roundness Threshold0.50, Gaussian, and the optional ranges off. If an error says the searched rectangle is too small, lower Radius or enlarge the Preview area. - Keep Shaped Areas checked. At Zoom 100%, inspect missed faint stars, false hot-pixel/noise detections, saturated cores, and blends. Fix detection settings before changing mask growth.
- Tune Percent Increase and Pixel Increase, then restrict Min/Max Size if
required. Percent Increase is a direct radius multiplier: default
0.50halves the measured base radius before adding pixels; it does not add 50%. - Compare the six Star Shape profiles. Use Switch image under the same Display Mode. Uncheck Preview area before the final full-frame check, because the area is searched on its own.
- Select Apply. A progress window with Cancel appears; on success AfterNight opens the new mask view, resets the settings, and closes the process. The original remains unchanged. Save/export the mask if it must survive the session.
Complete parameter and action reference¶
| UI label/action | Type and unit | Runtime default | Persisted-default exception | Valid values, step, or constraints | Effect of increasing, decreasing, or selecting | Dependencies and enable/visibility rules | Quality, artifact, runtime, memory, or disk trade-off | Scope: preview/apply, channel, mask, still/sequence | Persistence |
|---|---|---|---|---|---|---|---|---|---|
| Radius | Candidate-search half-width, pixels | 5 |
None | 3..32; integer |
Larger widens the box a star must be the brightest point of and skips a wider border; smaller targets compact stars | Detection group; locked during Apply | The picture or Preview area must exceed 4 x Radius + 8 pixels each way or the run is refused; large values cost more and lose a fainter star within Radius of a brighter one; small values split or truncate broad stars |
Detection; still/sequence | Captured per execution; Reset/success return 5 |
| Threshold | Background-noise multiplier | 1.00 |
None | 0.01..15.00; step 0.05; slider maps thousandths |
Raises/lowers the candidate threshold B + 5 x Threshold x n |
Detection group | Lower finds fainter/noisier candidates and costs more fits; higher misses faint stars | Detection plane | Captured; Reset/success return 1.00 |
| Amplitude Range | Checkable group | Off | None | Off/On | Enables a window on the fitted amplitude | Detection group; child bounds apply only when checked | Useful against weak/noisy or clipped fits; a narrow window can reject all stars | Post-fit rejection | Captured; Reset/success turn off |
| Amplitude Range > Minimum | Fitted amplitude, normalized (full scale 1) |
0.00 |
None | 0.00..0.99; step 0.05 |
Higher rejects fainter fits | Amplitude Range on | Can suppress weak noise but remove faint stars | Post-fit rejection | Captured; Reset/success return 0.00 |
| Amplitude Range > Maximum | Fitted amplitude, normalized (full scale 1) |
1.00 |
None | 0.01..1.00; step 0.05; a Maximum below Minimum is refused when the run starts |
Lower rejects brighter fits | Amplitude Range on | Can remove clipped/bright stars or empty the list | Post-fit rejection | Captured; Reset/success return 1.00 |
| Roundness Threshold | Minimum fitted axis ratio FWHMminor/FWHMmajor |
0.50 |
None | 0.01..0.95; step 0.05 |
Higher requires rounder stars | Detection group | High values reject elongated stars; low values admit trails/blends | Post-fit rejection | Captured; Reset/success return 0.50 |
| Roundness Range | Checkable group | Off | None | Off/On | Enables an upper axis-ratio limit | Detection group | A narrow lower/upper band can empty the list | Post-fit rejection | Captured; Reset/success turn off |
| Roundness Range > Maximum | Maximum fitted axis ratio | 1.00 |
None | 0.01..1.00; step 0.05; a Maximum below Roundness Threshold is refused when the run starts |
Lower rejects rounder fits above this bound | Roundness Range on; off means maximum 1.0 |
Usually leave off unless deliberately selecting elongation | Post-fit rejection | Captured; Reset/success return 1.00 |
| Convergence | Solver iteration multiplier | 1 |
None | 1..3; integer |
Allows each fit more solver iterations | Detection group | Can rescue difficult fits at CPU cost; a fit that does not converge is discarded | Per-candidate fit | Captured; Reset/success return 1 |
| Relax PSF Checks | Checkbox | Off | None | Off/On | Skips the scan's symmetry and local-amplitude tests and the fit's width-estimate and residual checks; amplitude, beta, geometry, magnitude, and roundness checks still apply | Detection group | Retains more difficult stars but also blends and poor fits | Candidate scan and post-fit validation | Captured; Reset/success turn off |
| Profile Type | Selector | Gaussian | None | Gaussian, Moffat | Chooses the fitted PSF model; Moffat also fits its exponent beta | Detection group; Moffat enables Minimum Beta | Moffat can represent broader wings but fits one more parameter | Per-candidate fit | Captured; Reset/success return Gaussian |
| Minimum Beta | Moffat exponent floor | 1.50 |
None | 0.05..10.00; step 0.05 |
Higher rejects Moffat fits with heavier wings (lower beta) | Enabled only for Moffat | Too high rejects valid winged stars; too low admits unstable fits | Moffat post-fit rejection | Captured; Reset/success return 1.50 |
| Use Lightness | Checkbox | Off | None | Off/On | On searches an RGB image's CIE L*; off searches its green channel; a grayscale image is always searched in its one channel | Detection group; meaningful for RGB (on grayscale it only adds , on the lightness to the history text) |
L* adds a conversion and combines all channels; green may have higher sampling and signal on a one-shot-color camera | Detection plane only | Captured; Reset/success turn off |
| Shaped Areas | Checkable group | On | None | Off/On | On paints radial profiles; off paints solid ellipses whose samples are 0 or 1 |
Growth/size/shape children apply only when checked | Shaped profiles give graded, circular footprints; solid ellipses keep the fitted axis ratio and angle with hard edges | Mask painting only | Captured; Reset/success turn on |
| Percent Increase | Radius multiplier | 0.50 |
Label suggests a percentage increase, but the value is used directly as a multiplier | 0.01..1.00; step 0.05 with adaptive stepping |
Scales the larger fitted FWHM to the painted radius; 0.5 halves it |
Shaped Areas only | Small values under-cover stars | Shaped masks; all accepted stars | Captured; Reset/success return 0.50 |
| Pixel Increase | Additive radius, pixels | 0 |
None | 0..99; integer |
Adds a fixed number of pixels after Percent Increase | Shaped Areas only | Dominates small stars and can merge neighboring masks | Shaped masks | Captured; Reset/success return 0 |
| Min Size | Smallest painted diameter, pixels | 2 |
None | 0..99; integer; a Min Size above Max Size is refused when the mask is painted |
Raises the minimum accepted 2 x larger FWHM |
Shaped Areas only | Rejects small stars/hot pixels | Shaped-mask star selection | Captured; Reset/success return 2 |
| Max Size | Largest painted diameter, pixels | 25 |
None | 0..99; integer; must not be below Min Size |
Raises/lowers the maximum accepted 2 x larger FWHM |
Shaped Areas only | High values retain large/saturated structures; low values reject large stars | Shaped-mask star selection | Captured; Reset/success return 25 |
| Star Shape | Selector | Truncated Bell | None | Bell, Truncated Bell, Linear, Truncated Linear, Cubic, Quadratic | Chooses the radial falloff function | Shaped Areas only | Changes core plateau, wings, cutoff, overlap, and transition width | Per-star shaped profile | Captured; Reset/success return Truncated Bell |
| Target Image | Image/sequence selector | Attached active target | None | Open eligible image or sequence | Changes the source, the Preview, and the image the new mask is made from and named after | Active target required; duplicate/exclusive launch gates apply; locked during Apply | Selecting the wrong target creates a mask for the wrong data | Detection source; active mask is ignored | Target lifetime; Reset unchanged |
| Preview | Checkbox | Checked | None | Checked/unchecked | Creates or removes the asynchronous mask preview | Remains interactive during Apply | Each run copies the target or the Preview area (plus a floating copy for integer images) and reruns detection and painting; a burst of changes collapses into one run with the latest values; Apply cancels a preview in progress; a refused preview reports its error | Preview only; still/current sequence frame | Window lifetime; Reset unchanged |
| Preview pane | Image viewer | Mask result, with Preview area on at start | None | Pan/scroll and actions below | Shows the generated mask without modifying the source; with Preview area on, the area's mask over the rest of the image, an RGB image shown as its luminance | Exists only with Preview | Holds source, mask, and display buffers and detector workspaces | Preview only | Window lifetime |
| Fit To Window | Preview-toolbar action | Preview fitted initially | None | Click or Ctrl+Shift+F | Fits the whole image | Preview required | Broad context can hide small missed/false detections | Preview display only | Viewer lifetime |
| Zoom In | Preview-toolbar action | Current scale | None | Click; relative 1.25x |
Enlarges the mask | Preview required | Improves edge/core inspection | Preview display only | Viewer lifetime |
| Zoom Out | Preview-toolbar action | Current scale | None | Click; relative 0.8x |
Reduces the mask | Preview required | Shows distribution but hides fine edges | Preview display only | Viewer lifetime |
| Zoom 100% | Preview-toolbar action | Current scale | None | Click; absolute scale 1.0 |
Shows one-pixel viewer scale | Preview required | Preferred for false detections, coverage, and edge profiles | Preview display only | Viewer lifetime |
| View Channel | Preview-toolbar selector | Grayscale, disabled for the one-channel result | None | Grayscale for current mask | Selects displayed component only | Output has one channel | Display-only | Preview display only | Viewer lifetime |
| Display Mode | Preview-toolbar selector | Inherits target Linear or Autostretch when created | None | Linear, Autostretch | Changes display only; Autostretch stretches the preview with the target image's statistics and stretch settings | Shown because this process supports a display stretch | Different stretches invalidate visual comparison | Preview display only | Preview-view state |
| Autostretch Settings | Preview-toolbar action | Starts from the target view's settings | None | Opens the preview's display-stretch settings | Tunes preview presentation only | Shown beside Display Mode | Can exaggerate weak mask wings/background; never changes output | Preview display only | Viewer-scoped, not a Star Mask parameter |
| Switch image | Preview-toolbar action | Mask shown | None | Click, Space, right-click, or Ctrl+Shift+O | Toggles mask/original | Preview required | Comparison only | Preview display; current frame | Preview lifetime |
| Preview area | Preview-toolbar checkbox | Checked; centered 600x600 when possible, labeled Preview: Star Mask |
None | Checked/unchecked; move/resize area | Searches and paints only the area and shows it over the rest of the image | Preview required; disabled during Apply | Faster tuning, but the area is searched with its own sky, noise, and border, so stars near its edges can differ from a full-frame Apply; an area not more than 4 x Radius + 8 pixels each way is refused |
Preview and snapshot | Window lifetime; Reset unchanged |
| Take snapshot | Preview-toolbar action | No snapshot | None | Click or Ctrl+Shift+K | Runs the current settings again and opens <target> - Star Mask - SNAPSHOT; with Preview area on, the snapshot is the composite the Preview showed |
Preview required; disabled during Apply | Adds full detector/mask work and one auxiliary still; display stretch is not baked in; no lineage entry is added | New still; source unchanged | Each action creates a new view |
| Apply | Button/action | Enabled after initialization/reset updates | None | One action | Captures all controls, locks the target, finds and paints on a worker, opens the new mask still or sequence beside the target, resets, and closes after success | Target lock required; during the run every Detection and Shaped Areas control, Target, Apply, Reset, Close, and the preview's snapshot and area actions are disabled whether or not Preview is on | Detector cost plus mask painting; output allocation, and sequence encoding adds memory/disk | New mask still/sequence; never blends through an active mask | Run snapshot; nothing is stored between openings |
| Reset | Button/action | Enabled while idle | None | One action | Restores every detection/mask default listed above | Leaves Target, Preview, Preview area, and preview-toolbar state unchanged; checked Preview schedules a run | Can trigger a complete preview recomputation | Configuration only | Immediate; also after successful Apply |
| Close | Button/action | Enabled while idle | None | One action | Closes without creating the Apply output | Disabled during Apply; closing the window while a run is in progress stops it | A stopped run makes nothing | Window/execution | Settings discarded |
| Progress / Cancel | Progress window with a busy indicator for the current image and Cancel; a sequence run adds a second card showing Executing process in sequence. Frame i/N and the share of frames done |
Created for every Apply | None | Cancel | Stops the run at the engine's next checkpoint: between scan bands, fitted candidates, painted rows, or sequence frames | Still or sequence Apply; the frame card appears only for a sequence | Nothing waits on the GUI thread | Still/sequence Apply | A stopped run opens no view and leaves no partial sequence; success opens the new mask and closes the process |
How the algorithm works¶
Conceptual pipeline¶
- The search plane is a grayscale image's only channel, an RGB image's green
channel, or its CIE L* when Use Lightness is checked. Samples are read in
normalized units with full scale
1: an unsigned integer divided by its largest code, a signed integer counted from its smallest code, and a floating sample as it is. The plane is searched as linear data whatever state the image records. - The detector measures the plane's sky level
Band noisen, smooths the plane with a Gaussian of about 1.83 pixels, and lists candidates: points of the smoothed plane above the threshold that are the brightest point of their2 Radius + 1pixel box, are backed by enough bright neighbors, and pass the scan's symmetry checks. - Candidates are fitted with an elliptical, rotated Gaussian or Moffat PSF, brightest first. Fits outside the roundness or amplitude window, below Minimum Beta, wider than the scan's own width estimate, or with too large a residual are rejected, and a fit that does not converge is discarded. At most 20,000 stars are kept.
- With Shaped Areas on, each accepted star passes the size filter, has its base radius multiplied and enlarged by pixels, then receives the selected radial profile. Overlaps keep the maximum mask value.
- With Shaped Areas off, each accepted star becomes a solid ellipse from its fitted widths and position angle, painted at full value.
- The result is one grayscale channel with the target's dimensions and
representation. Apply records it as nonlinear with the operation
star-mask.
Detection models¶
With UI Threshold s, the candidate threshold is
T = B + 5 s n.
Gaussian fits an elliptical Gaussian with its position angle. Moffat
fits an elliptical Moffat profile whose exponent beta is fitted with the rest;
a fit whose beta falls below Minimum Beta is rejected. Each accepted star has a
major and a minor full width at half maximum (FWHMmajor, FWHMminor) and a
position angle. Its roundness FWHMminor / FWHMmajor must lie between
Roundness Threshold and the Roundness Range maximum (1 when the range is
off). With Amplitude Range on, the fitted amplitude, in the same normalized
units, must lie inside the range.
Shaped masks use the larger full width as the base radius,
R_base = max(FWHMmajor, FWHMminor), and become circular even when the fitted
star is elliptical. Solid ellipses instead keep the fit: each ellipse spans
4 x FWHMmajor along the major axis, has the fitted axis ratio, and is turned
by the position angle. A pixel is painted with 1 when at least half of its
area, estimated on a 4 × 4 sub-pixel lattice, lies inside the ellipse.
Growth, size, and profile equations¶
The size filter accepts a shaped star only when
Min Size <= 2 R_base <= Max Size.
The painted radius is then
R = Percent Increase x R_base + Pixel Increase.
Thus the default 0.5 is a half-radius multiplier, not a 50% addition. For
distance d from the star's center to each pixel's center, the six profiles
are:
- Bell:
exp(-d^2 / (2 R^2)). - Truncated Bell:
min(1, exp(0.5) x exp(-d^2 / (2 R^2))). - Linear:
max(0, 1 - d / (3 R)). - Truncated Linear:
max(0, 1.5 - 1.5 d / (3 R)). - Cubic:
max(0, 1 - (d / (3 R))^3). - Quadratic (implementation label):
max(0, 1 - (d / (3 R))^4).
Each star is painted over the square reaching 3R from its center, and values
are clamped to [0,1]. The four polynomial profiles reach zero at 3R; the
two bells are cut at the square's edge, which leaves a small step of at most
about 0.011 for Bell and 0.018 for Truncated Bell. Despite its UI name,
Quadratic uses a fourth power.
Boundary and failure behavior¶
- The candidate scan skips a border of Radius pixels around the searched area, so a star peaking that close to the edge is not found. Painting is clipped to the image.
- A picture, or a Preview area, that is not more than
4 x Radius + 8pixels wide and tall is refused with the reason, and no mask is made. - An Amplitude Range Maximum below its Minimum, a Roundness Range Maximum below Roundness Threshold, and, with Shaped Areas on, a Min Size above Max Size are refused with the reason, and no mask is made.
- A filter-array (mosaic) image that has not been demosaiced is refused.
- No detections produce a black mask rather than an error.
- In the search plane, a pixel the image's own validity marks as not valid, or on an ordinary image a pixel holding NaN or an infinity, is replaced by the measured sky before smoothing, so it neither stops the run nor becomes a star. With Use Lightness, a pixel the image's validity rejects reads as black in the lightness plane instead.
- A run the session's memory budget cannot hold is refused with the reason and makes nothing.
- Detection and painting observe Cancel; a stopped run makes no mask and shows no error.
Parameter interactions and starting points¶
| Combination | Conservative starting point | Too weak looks like | Too strong looks like | Adjustment order |
|---|---|---|---|---|
| Radius + picture or Preview area size | Radius 5, which needs more than 28 pixels each way |
Broad stars truncated or split | Run refused on a small picture or area; a fainter star within Radius of a brighter one is lost | Match Radius to star width -> check the searched size -> enlarge the area or lower Radius |
| Radius + Threshold | Radius 5, Threshold 1.00 |
Broad/faint stars missing | Dense noise candidates, blends, slow fits | Match Radius to star width -> lower Threshold gradually |
| Roundness + Relax PSF Checks | 0.50, Relax off |
Useful elongated stars rejected | Trails/blends/poor fits retained | Tune Roundness -> inspect -> enable Relax only for diagnosed rejection |
| Gaussian + Moffat/Minimum Beta | Gaussian first | Broad wings fit poorly | Moffat becomes slow or rejects fits | Compare same field -> choose Moffat -> tune beta last |
| Detection + shaped growth | Fix detection first; then 0.50, 0 px |
Accepted stars under-covered | Halos merge and protect background | Fix false/missed detections -> Percent Increase -> Pixel Increase -> size bounds |
| Shaped + solid output | Shaped Truncated Bell for graded protection | Wings too narrow | Hard edges or excessive merged coverage | Choose intended downstream use -> compare modes -> refine shape/growth |
Inputs, outputs, and metadata¶
- Apply creates one new mask; it never replaces the still source. A sequence source creates a new temporary mask sequence and keeps the source sequence.
- Output width and height match the processed source frame, and the output has
exactly one grayscale channel in the target's representation. A floating mask
holds
0..1; an unsigned integer mask runs from0to the largest code, and a signed integer mask from the smallest code (unpainted) to the largest (fully painted), rounded to the nearest code, ties to even. CFA sequence auto-debayer can change the decoded detection input to RGB, but the mask remains grayscale. - The new mask is named
<target> - STARMASK; snapshots use<target> - Star Mask - SNAPSHOT. No file is saved automatically. - The mask keeps the target's acquisition record, astrometric solution, and
lineage, but none of the target's FITS/XISF header cards: it carries only the
processing-state cards,
ANLINnonlinear,ANASRCprocess, andANOPstar-mask. Every sample is marked valid, and no linear encoding is claimed. Apply adds a lineage entry namingan::paintShapedStarMask, oran::paintEllipticalStarMaskwithout Shaped Areas, with the step description. - The new view's history starts with the step description. At the defaults it reads:
Created in shaped areas mode. Radius: 5, Threshold: 1.00, Profile: Gaussian. Percent Increase: 0.50, Pixel Increase: 0, Min Size: 2, Max Size: 25, Star Shape: Truncated Bell
Without Shaped Areas it says binary areas mode; with Use Lightness the
profile is followed by , on the lightness. The target's own history is
unchanged.
- Snapshots hold what the Preview showed and do not gain the lineage entry that
Apply records.
- An active source mask and inversion state are ignored. Assign the generated
mask later through the Masks workflow.
- Nothing is stored between openings of the window.
Performance¶
Detection scales with image area and candidate count. The candidate scan runs
in parallel bands, and every candidate is fitted with a nonlinear PSF, brightest
first, until 20,000 stars are accepted or the candidates run out. Moffat, larger
Radius, lower Threshold, higher Convergence, Relax PSF Checks, and dense fields
increase work. Painting runs in parallel over rows, each row checking every
accepted star, and each shaped star covers a square of 6R pixels on a side;
solid ellipses sample every covered pixel on a sub-pixel lattice. A run copies
the target (plus a floating working copy for integer images, and a lightness
plane with Use Lightness), and holds the mask with, for an integer target, its
floating working copy. A run the session's memory budget cannot hold is refused
with the reason. Sequence processing adds decoding, encoding, and temporary disk
proportional to frame count. Tune on Preview area, then verify the full frame
before Apply. No production timing or peak memory was measured.
Worked example¶
- Evidence mode: Source-and-synthetic-test-derived.
- Input and settings: A synthetic linear grayscale Float32 field of planted
stars, wide enough for the search, at the dialog defaults: Radius
5, Threshold1.00, Gaussian, Shaped Areas,0.50Percent Increase,0Pixel Increase, size2..25, and Truncated Bell. - Expected checkpoint: The mask is one channel, the pixel under every planted
star holds more than
0.5, and the shaped falloffs leave samples between0and1. With Shaped Areas unchecked, every mask sample is exactly0or1. On an RGB copy whose green channel holds the field and whose red and blue channels hold it mirrored, every green star is painted. A 32 × 24 pixel picture is refused at Radius5, because it needs more than 28 pixels each way, and is searched at Radius3, which needs more than 20. - Inspect: At 100%, check missed peaks, false noise/hot pixels, saturation, blends, profile edges, and whether mask coverage reaches the intended wings.
- Limitation: This review did not execute an approved astronomical star field or sequence, so detection completeness, production mask quality, timing, and memory are not claimed.
Warnings and limitations¶
- Percent Increase is a multiplier, not an additive percent. Default
0.50shrinks the measured base radius before additive pixels. - Min/Max Size are diameter-like tests (
2 xthe larger FWHM), despite tooltips referring to star radius. They are ignored when Shaped Areas is unchecked. - Shaped masks discard fitted ellipticity and angle by using the larger FWHM as a circular radius. Use solid ellipses when fitted ellipse geometry matters.
- Solid ellipses have hard edges and offer no soften control in this process; Percent Increase, Pixel Increase, Min/Max Size, and Star Shape do not apply to them.
- The Quadratic profile is fourth-power in the current implementation.
- A floating-point image is read as it is and full scale is taken as
1. The detector judges saturation as a fraction of the range from the sky to1, so data scaled far above1is judged against the wrong range. - Apply marks the mask nonlinear. Do not interpret its state as the source image's processing state.
Troubleshooting¶
| Symptom or exact error | Verified cause/validation path | Recovery | Evidence source |
|---|---|---|---|
| Process is disabled or does not open | No active image/sequence, duplicate attached process, or exclusive attached process | Activate the intended view and close conflicting process windows | launchSingleImageProcess; registry descriptor |
Error message includes the searched rectangle is too small for the search radius, at Preview or Apply |
The picture, or the Preview area, is not more than 4 x Radius + 8 pixels wide and tall |
Lower Radius, enlarge the Preview area, or uncheck it; nothing was made | an::planStarDetection |
Error message includes the amplitude window's upper bound is at or above its lower bound |
Amplitude Range Maximum is below its Minimum | Raise Maximum or lower Minimum | an::planStarDetection |
Error message includes the largest roundness lies within the unit interval and at or above the smallest |
Roundness Range Maximum is below Roundness Threshold | Raise Maximum or lower Roundness Threshold | an::planStarDetection |
Error message includes the size window is finite, not negative and ordered |
Min Size is above Max Size with Shaped Areas on | Correct the size bounds | an::paintShapedStarMask |
| Error at Preview or Apply on a camera mosaic | The image is a filter-array mosaic that has not been demosaiced | Demosaic first, or enable sequence auto-debayer | an::StarFrameView::create; an::planStarDetection |
| No stars appear | Threshold too high, Radius unsuitable, optional ranges reject all fits, or the searched plane is weak | Reset; check green versus Use Lightness; tune detection before size/growth; disable optional ranges | Process and detector sources |
| Many hot pixels/noise peaks appear | Threshold/size rejection is too permissive or Relax PSF Checks admits poor candidates | Raise Threshold; use shaped Min Size; disable Relax; inspect on the same display stretch | Detector rejection source |
| Moffat detects far fewer stars | Fits fail or beta falls below Minimum Beta | Return to Gaussian; use Moffat only for diagnosed wings and tune Convergence/beta carefully | an::detectStars rejection reasons |
Mask is too small at Percent Increase 0.50 |
0.50 is a half-radius multiplier, not a 50% addition |
Increase toward 1.0 and/or add Pixel Increase |
an::paintShapedStarMask |
| Min/Max Size changes do nothing | Shaped Areas is unchecked | Re-enable Shaped Areas or accept that solid ellipses ignore shaped controls | StarMaskProcess::executeTypedProcessImpl |
| Shaped mask loses elongation | Shaped masks use the larger FWHM as a circular radius | Use solid ellipses to retain fitted ratio/angle, or use a later morphology workflow | an::paintShapedStarMask |
| Preview differs from final output | Preview area is searched on its own, or the display mode differs from the full-frame comparison | Uncheck Preview area, match Linear/Autostretch settings, and recheck at 100% | ImageRTPreviewControl preview path |
| Error names the memory budget | The session cannot hold the run's copies of the image and the mask | Close other images or work on a smaller crop; nothing was made | process_utils::normalizedCopyOf; process_utils::createDerivedImage |
| The mask has no OBJECT, filter, or exposure cards | A mask carries only the processing-state cards of its target's header | Expected; the acquisition record and astrometric solution are kept | process_utils::derivedImageMetadata |
Related workflow steps¶
Use Star Profiler when you need a saved, inspectable, and manually curated detection list. Assign the output through Masks, refine it with Morphological Transformation, or use it to guide Star Reduction. For neural star separation instead of profile detection, use Starnet++.
References and provenance¶
- The fitted-PSF detector is adapted from Siril's star finder and PSF fit, by Francois Meyer and team free-astro (GPL-3.0-or-later), and extended by AfterNight.
- The six Star Shape profiles, their reach of three radii and the largest value kept where stars overlap are adapted from DeepSkyStacker's star-mask shapes, under the BSD 3-Clause License of Luc Coiffier and the DeepSkyStacker contributors. Help > About AfterNight credits both works and reproduces that licence's notice.
- AfterNight project source is authoritative for the detection plane, the threshold, the rejection windows, the size and growth rules, the solid-ellipse rule, representation/metadata/state behavior, and the Preview and sequence workflow.
- The generated mask is intended for AfterNight's standard image-mask system; see Masks for assignment and blend direction.