Version 0.7.1 · Francisco Bitto Source and issues · Release notes · MIT license
A Python/PySide6 desktop application for enhancing solar-eclipse corona images. Preview, full-resolution verification and export share independent filter layers and Photoshop blend modes. These are visualization products, not calibrated brightness measurements.
Earlier Basic-mode layout with a fast, approximate preview. The current Basic starter also includes FNRGF and Tangential.
Expert mode with NAFE enabled and its noise and support controls expanded. Fast preview is approximate; export calculates at native resolution.
Use Python 3.14 or later, with the dependencies available for your platform. From the project directory:
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txt
python main.pyOn Windows, use python to create the environment and activate it with .venv\Scripts\Activate.ps1. For a macOS app or DMG, see build instructions. Local builds are not a notarized public release. Rebuild an existing app/DMG to include source changes; restarting an older packaged application does not update it.
Windows PowerShell, without activating the environment:
python -m venv .venv
.venv\Scripts\python.exe -m pip install -r requirements.txt
.venv\Scripts\python.exe main.pyDependencies: PySide6 (GUI), NumPy/SciPy (numerical processing), OpenCV/Pillow (image handling), Astropy/xisf (astronomical input), tifffile (TIFF), watroo 0.0.4 (WOW), and psd-tools 1.26.0 (PSB). Install the listed requirements; the PSB writer relies on the specified low-level API. Keep requirements.txt and the inline metadata in main.py synchronized.
Build on the target operating system; PyInstaller does not cross-compile these packages. Install the build dependencies in the same environment as the runtime dependencies.
macOS (Terminal):
.venv/bin/python -m pip install -r requirements.txt -r requirements-build.txt
.venv/bin/python scripts/build_macos.py --dmgOutput: dist/Eclipse Image Processor.app and .dmg. Omit --dmg for just the app. The build uses assets/Eclipse_Image_Processor.icns for Finder/Dock and the matching PNG for Qt and the menu-bar icon. Architecture follows the Python interpreter. See macOS build details.
Windows (PowerShell):
.venv\Scripts\python.exe -m pip install -r requirements.txt -r requirements-build.txt
.venv\Scripts\python.exe scripts/build_windows.pyOutput: dist\Eclipse Image Processor\Eclipse Image Processor.exe. Distribute the whole application folder, including _internal. The build embeds assets/Eclipse_Image_Processor.ico and version metadata; Qt uses that ICO for the window/taskbar and the matching PNG for the notification-area icon. See Windows build details.
The menu-bar/notification-area icon appears when the desktop supports a system tray. Local builds are unsigned or ad-hoc signed; public signing/notarization is a separate release step. Both builders use config.APP_VERSION and include third-party license notices. Rebuild to update an existing package's icon or version.
- Open Image / Settings: use the button or drag a single TIFF, FITS, XISF, PNG, JPEG, BMP or settings JSON onto the app. Dropping a file when an image is open asks for confirmation before replacing it; No is the default. TIFF input must be a single-page mono or RGB(A) image; multi-page/volume layouts are rejected. Images must be at least 4 × 4 pixels. Under Preparation, declare Input type as Linear or Non-linear (stretched). Linear is the default; there is no automatic detection. Prefer original linear data. This declaration does not undo stretching.
- Check disk geometry: inspect the red circle and adjust Center X, Center Y and Radius in original-image pixels. Use Auto-detect Lunar Disk or Ctrl-click / Command-click to move the center. A missing-data boundary can be larger than the physical Moon. The adjacent Disk overlay button shows or hides the red circle and cross without recalculating the image; both are visible when opening an image.
- Choose Controls and Appearance: the selector near the status area offers Basic (the default), Standard and Expert. Basic limits filters and controls; entering it disables excluded filters without clearing their numeric settings. In Appearance, adjust Exposure (EV), optionally enable Calibrate color for linear RGB, then adjust General warmth, followed by Corona warmth. Both start at zero. The presentation preview starts enabled; double-click Exposure to restore 0 EV.
- Activate and adjust layers: expand a filter section to edit its controls, and check Active to include it. Expanding the section alone does not activate it. Use Opacity to mix its layer with the composition; changes recompose cached layers after a short pause. Larson–Sekanina additionally exposes Gain, which scales its signed detail before Linear Light clipping.
- Choose ACHF variants: each variant has a separate card with its own Active checkbox and opacity. Several can be active together. Basic offers ISO 04 and Angular; Standard and Expert also offer Adaptive and ISO 01.
- Inspect detail: use Fit, 50%, 100% or 200% above the image. See the viewing instructions below.
- Save: choose Save Settings Only for a JSON, or Export Final Image for the full-resolution presented RGB16 TIFF, JPEG, settings JSON and float32 working-source package. Enable Also export editable Photoshop layers to add a layered PSB or TIFF package.
Fit uses the fast preview, at most 1500 pixels on its longest side. 50% calculates filters at half the original width and height (one quarter of the pixels), with a separate preview cache. 100% and 200% request native filter calculations in the background when needed; subsequent zooming and panning reuse the rendered pixels. Percentages refer to physical screen pixels, including Retina displays. At 200%, pixels are enlarged without smoothing. The 50% cache is never used as a full-resolution export result. The first native calculation can take time; pending views are labelled until ready.
At 50%, 100% or 200%, drag, scroll or use arrow keys to pan. While editing sky samples, use middle-drag for panning. Ctrl-click / Command-click moves the disk center. Returning to Fit restores fast numerical editing unless Full-resolution preview is checked.
Fast preview, native verification and export share normalization levels measured on the native working image, including background correction. Fast filters remain approximate, but resizing does not independently choose a different brightness window. RGB color and optional calibration appear in both preview modes.
View Original bypasses enhancement filters and the separate original-prominence layer. Enabled background equalization, color calibration, General/Corona warmth, green reduction and the selected presentation still apply. Uncheck Calibrate color to inspect uncalibrated color; disable background equalization too to inspect the source without that correction. Turn Preview PSB presentation off to inspect the un-stretched view. Exposure controls presented TIFF/JPEG and layer-export presentation; this toggle changes only the viewport.
Background Gradient is optional and off by default. On linear inputs, enable Equalize background gradient, choose a coronal exclusion radius and review Show / edit sky samples. The initial six-disk-radius exclusion is a starting point, not a guarantee of empty sky. Green squares are sky samples; the dashed yellow circle excludes the corona and lunar disk. Left-click adds a sample, right-click removes a nearby one, and middle-drag pans while editing. Changing radius or grid density regenerates samples. In manual mode, press Calculate to apply changes.
Background model selects Plane (degree 1), the default, or Quadratic (degree 2) for smooth curvature. Changing the model keeps your sky samples and updates the preview when automatic calculation is enabled. The correction robustly fits each RGB channel (or mono) to native patch medians, requiring at least 6 samples for a plane or 12 for a quadratic surface, distributed over both axes. It subtracts spatial variation only, preserving the fitted mean sky level; it does not make the sky black or subtract a constant colour cast. Original source arrays remain available when disabled. All enhancement layers, colour calibration and export use the corrected linear working input. The model and sample positions are saved in JSON; they are regenerated for a new image. NaNs and explicit missing-data masks remain excluded; finite zeros are measurements. Sky samples containing faint corona can bias either fitted model: inspect and edit them. Method references: Siril background extraction and Seti Astro ABE.
Standard/Expert first-load opacities are NRGF and NAFE 40%; WOW, Tangential and all ACHF variants 10%; FNRGF, MGN and RHEF 20%; and Larson–Sekanina 75% with Gain 25%. Basic uses the six-layer starter below.
Filter Statistics & Normalization sits directly after Background Gradient, before Radial Enhancement. The group is hidden in Basic and retains its values. Standard shows Filter normalization; Expert also shows AEL support separation, lunar/bright statistical exclusions, lunar guard, bright-limb percentile and annulus radius. These exclusions control filter estimation/support; they do not replace the missing-data mask.
Filter normalization offers the original Compatible path and an optional Revised (experimental) path for ACHF, Tangential and continuous FNRGF. Revised reduces demonstrated ring/normalization artifacts and preserves the tested detail signs, while changing contrast. Recipes retain their saved choice; older recipes without the selector use Compatible. Per-filter Bounded or Source-relative mappings override the global policy for those layers. See method, validation and limits.
In Standard/Expert, Tangential offers Contrast: Source-relative (experimental) below Opacity. It restores outer visibility using a source-continuum/noise reference and bounded signed contrast; noise becomes more visible too. Existing recipes keep their prior mapping. See method and validation.
AEL ACHF cards offer optional Bounded signed contrast and a Detail contrast slider below Opacity: up to 2× for ISO01 and 4× for ISO04/Angular. Weak detail and noise become more visible while strong detail is compressed more gradually. Standard/Expert retain the original default mappings; Basic starts ISO04/Angular at Bounded contrast 3. See validation and preview limits.
AEL edge-aware WOW also offers Noise reduction (0–5, default 0; Basic starter 3). Start at 1 and compare native detail: stronger suppression reduces sky grain but can remove faint corona. This control is available in Basic mode; other WOW backends retain their existing denoise thresholds. See method and validation.
The first direct image load in Standard or Expert enables FNRGF, MGN, AEL guided edge-aware WOW, ACHF ISO 04 and ACHF Angular. Other filters start disabled/excluded. Later direct image loads preserve all filter edits and activation states; a JSON load restores its own settings and leaves omitted filters disabled. See the complete defaults table.
The first direct image load in Basic enables these six independent layers:
| Layer | Starting settings | Opacity |
|---|---|---|
| NAFE | AEL original; automatic sigma, window 129 | 40% |
| FNRGF | Reference-compatible; 2 native px rings, inner radius 1 R, outer radius 12.6 R, order 16, 64 sectors, MAD, Log spacing | 15% |
| WOW | AEL guided edge-aware; eight scales, Noise reduction 3 | 10% |
| Tangential | Source-relative; gain 1, angular sigma 3° | 10% |
| ACHF ISO 04 | Bounded signed; Detail contrast 3 | 10% |
| ACHF Angular | Bounded signed; Detail contrast 3 | 10% |
Experimental AEL support separation is enabled. NRGF and MGN remain available but off. RHEF, ISO01, adaptive ACHF and Larson–Sekanina are excluded in Basic. Basic retains simple opacity controls plus the available NAFE method, WOW noise reduction and bounded ACHF contrast controls; use Standard/Expert for further numerical adjustments.
The starter applies once after first-image initialization. Later direct loads preserve filter edits; changing control levels does not reapply it. Saved recipes restore their own settings, with omitted filters disabled. Disk geometry is detected for each image; Full-resolution preview remains a separate viewing choice.
This preset was visually selected on one master, accepting slight background noise and a visible but acceptable limb ring. Inspect native detail and boundaries on other images. Small images may lack support for eight-scale WOW noise reduction: reduce scales in Expert or set Noise reduction to 0 if its support error appears.
Settings JSON version 4 records the current controls. Only schema version 4 is accepted. Earlier v4 control layouts are supported: the old Advanced flag maps to Standard or Expert, and unspecified input defaults to Linear. Larson–Sekanina Gain is stored separately from opacity.
Auto Calculate waits 650 ms after numerical edits. Turn it off to edit several parameters, then use the manual calculation button. Disabling and re-enabling an unchanged filter reuses its cached layer. Native verification layers are reused for export while the source and filter settings match. Independent filters run in parallel within CPU and memory limits.
The numeric fields are editable. Double-click a slider to restore its default. The mouse wheel scrolls the panel without changing values. Hover for an English tooltip; Controls near the top selects Basic, Standard or Expert. The app opens in Basic mode. Basic offers NRGF, NAFE, FNRGF, MGN, AEL edge-aware WOW, Tangential, ACHF ISO 04 and ACHF Angular with opacity controls. It disables other filters while retaining numeric settings; returning to Standard or Expert does not enable them again. Standard offers all filters with common controls; Expert reveals all parameters.
| Before enhancement | With filter layers |
|---|---|
![]() |
![]() |
The red circle is the application's disk-geometry overlay; it is not included in exported images.
Every filter starts from the shared working mono input, including optional background correction, rather than the output of another filter. Layers are blended in the following order over the AEL-style presentation base by default. The viewport can also inspect the un-stretched composition using the same filter layers.
| Layer | Blend mode | Main use |
|---|---|---|
| NRGF | Multiply | Continuous annular normalization adapted from AEL; median/MAD or mean/STD statistics. |
| NAFE (AEL) | Overlay | Noise-adaptive fuzzy equalization of linear HDR; AEL original or optional limb-aware experimental response. Enabled in the Basic starter; disabled in Standard/Expert first-load defaults. Expert exposes noise/window controls. |
| FNRGF | Multiply | Fourier radial normalization; check radial bounds, angular order and reference geometry. |
| RHEF | Overlay | Radial histogram equalization; compatible or continuous mode, with Upsilon redistribution. |
| MGN | Overlay | Local contrast at six Gaussian scales plus a global gamma component. |
| WOW | Overlay | Wavelet contrast with optional noise suppression and edge-aware processing. |
| Tangential Detail | Overlay | Angular-blur residuals around the reference center. |
| Larson–Sekanina | Linear Light | Signed rotational detail; radial increment fixed at zero. |
| ACHF | Overlay | Adaptive, ISO 01, ISO 04 and Angular detail layers. |
MGN defaults to sigmas 1.25, 2.5, 5, 10, 20 and 40 original-image pixels, weights 1, gamma 3.2, k 0.7, h 0.7 and truncation 3. The sliders always show original-image units; only the internal preview sigmas are reduced; unresolved bands below 0.5 target pixels are omitted. Other controls labelled preview px scale up for native processing; angular values remain in degrees.
ACHF cards independently enable any combination of variants. Each retains its own settings and opacity. All active ACHF variants are automatically included in layer export; inactive ones are omitted. Angular's default angular sigma is a parameter, not part of its name.
Filter opacity sliders use a 1.5 power curve for finer adjustment at low opacity: halfway along the track gives about 35%. Displayed, typed and saved values remain actual percentages; keyboard arrows adjust by one percentage point.
Each filter has its own Opacity; there is no global Reveal slider. Increase enhancement cautiously: more contrast can reveal noise and processing artifacts as well as structure.
Current guides: technical documentation index, layer composition and cache, continuous RHEF, Larson–Sekanina, AEL ACHF, AEL NAFE, and validation evidence and limits. Historical CPU measurements are indexed separately.
Preview PSB presentation starts enabled. Its controls sit above the export options and remain usable when layer export is off. The presentation uses per-channel Asinh strength 10 and a shared 0.9 highlight shoulder, following AEL 1.3.3. Automatic scale selection uses P99.5 of positive native luminance outside 1.2 lunar radii; this estimate is an application heuristic, not an AEL default.
Exposure (EV) adjusts the presentation from −6 to +6 stops. Double-click the slider to restore 0 EV. The value is saved in JSON and affects presented TIFF/JPEG and layer export. Switch presentation off to inspect the un-stretched working composition in the viewport; exports remain presented. Native verification is authoritative; reduced preview is approximate.
In Appearance, Calibrate color balances channel spans for linear RGB using gains, preserving channel ratios through a shared highlight scale. It is not photometric or ICC calibration. General warmth, immediately below it, sets the baseline for the whole image, including both sky and corona. Corona warmth follows, adding extra warmth to the enhanced corona and streamers while protecting sampled sky color; both warmth controls default to 0 and use a red/orange tint. Reduce green sky, off by default, suppresses excess green above the red/blue average only in supported sky. Its Green reduction (%) slider ranges from 0 to 100% and defaults to 75%; 0 bypasses the correction and 100% removes the measured excess where the sky mask is fully active; soft coverage blends the correction. It is SCNR-inspired, not a PixInsight SCNR implementation. Processing applies General warmth first, then extra Corona warmth, then sky green reduction.
Start low and inspect the sky and inner corona. The mask-dependent Corona warmth and Reduce green sky controls require RGB and at least six usable sky patches spread across the image; General warmth requires RGB but no sky fit. Review sky samples in Preparation → Background Gradient, even if equalization is off. All three adjustments are shared by preview and export and have editable masks in Photoshop layers; new fields in older settings default to 0/off. Original prominences use their own color controls.
The PSB contains a hidden Scaled input preview (16-bit), storing the working RGB (including enabled calibration/background correction) or mono input divided by its recorded storage scale. Negative values clip in this 16-bit reference; floating working-source and validity files preserve numerical mono input information. This quantized preview is not a recoverable linear master. Use the companion float32 working sources and validity for numerical data. See presentation and export details.
Export original prominences and chromosphere optionally creates a dark image from the originally loaded RGB, before background extraction, filters or colour calibration. Its independent Prominences (EV) exposure runs from 0 to +5 in Basic and Standard modes and −3 to +5 in Expert mode (new-session default 0), relative to the original red limb highlights. Negative values in older recipes remain active, with a notice in Basic or Standard mode until you edit them. Expert Prominence contrast runs from 0.5 to 2.0 (default 1.0), adjusting the separate soft highlight curve without changing the mask. Preview the image on black or its mask with the selector below it. In composition view it appears whether PSB presentation is on or off; presented TIFF/JPEG include the selected prominence layer.
Original prominences and chromosphere blended into the corona at 50% preview, with independent exposure, contrast, saturation and edge-softness controls.
The automatic mask selects red excess with soft transitions and an outer fade from 1.3 to 1.5 lunar radii. Its colour score discounts yellow/orange continuum so a warm corona does not become a dark ring when the low-exposure layer is blended. It does not exclude the lunar disk geometrically: observed pixels inside the fitted circle remain available, and original dark lunar signal stays faint. Review it for noise, colour casts and correct geometry; this is an editable presentation selection, not a physical separation of emissions. Monochrome input cannot supply original red prominences. Saturated colour or pixels already removed from the loaded HDR cannot be recovered by lowering exposure.
Prominence edge softness (px) adjusts the inward mask feather from 0–20 native image pixels (default 3). Increase it to soften the blend boundary; 0 disables feathering. Large values can make prominences appear fainter, and local feature thickness limits the effective width. It preserves image detail and protects thin chromosphere features without expanding the selection. Use Preview prominence mask to inspect it. Preview and exports use the same mask.
Save Settings Only writes the current controls and source-image reference to a JSON without calculating filters or writing images. Open Image / Settings reloads that JSON and restores the original image and adjustments. Relative and absolute source paths are stored, so the image and JSON can move together while preserving their folder layout. Forward-slash paths and older Windows backslash paths are supported. If neither saved path resolves, Locate original image lets you select the relocated original. Cancelling leaves the current image and adjustments unchanged. Choose the original image or an identical copy, not its rendered export; pixels and caches are not embedded. Loading does not rewrite the JSON. Use Save Settings Only or a new export to record the new source location. Only current version-4 settings files are supported.
For image export, choose a TIFF destination. The application writes:
<name>.tif(or.tiff): full-resolution RGB16 composition using the PSB presentation and exposure. This is an enhanced composition, not a photometric linear master.<name>_preview.jpg: the same presented composition at 8-bit JPEG precision.<name>.json: reloadable processing settings.<name>_sources/: float32 working mono/RGB in source units, validity mask and preprocessing receipt. No presentation curve, normalization or display ICC is applied.- Optionally,
<name>_PS_layers.psb, or a TIFF layer directory withLoad_layers_Photoshop.jsx, reference composite and recipe. - With prominences enabled,
<name>_prominences/PROMINENCES.tif(RGB16 on black) andPROMINENCES_MASK.tif(16-bit). Photoshop export also includes an unmasked original-colour layer with an editable mask, above the corona and optional Color Correction group. If a requested product already exists, the whole bundle uses a new numbered stem.
The default Photoshop format is PSB, 16-bit layers. Open it directly in Photoshop; layer names, modes, opacities and transparency are retained. The bottom 00_BACKGROUND_Black layer fills missing regions visually; hide it to reveal transparency. Original layer masks remain intact. The TIFF alternative includes a Photoshop import script.
Editable PSB layers in Photoshop, with separate blend modes and a black background.
The progress bar advances by export stages, not estimated time. Long filters or PSB verification may remain at one stage for a while. The console reports calculation times and, after completion, whether processing is idle or another update is pending. Layered exports use one available numbered stem for every companion, preserving previous bundles. GUI exports always include working sources and choose one unused stem for the full bundle.
The PSB is verified before publication. Its cached composition matches the main presented TIFF; Photoshop can round 16-bit blending slightly when recomputing layers. Display exports include an sRGB profile. The optional Add Color Correction to PSB (sRGB) group is rendered only in Photoshop; disable it when comparing with the application TIFF. See PSB validation and limits.
- RGB is retained for color presentation; filters use float32 luminance (
0.299 R + 0.587 G + 0.114 B). Nonfinite values and zero-alpha pixels are missing data. Not all source metadata is preserved. - Lunar/statistical exclusions differ from missing-data masks. Verify the center, radius and bright-limb exclusions before trusting radial enhancement.
- General warmth and Corona warmth add an artistic sunset tint (0–100) to RGB preview and exports. Both default to 0 and are saved with the project. General warmth sets the baseline; Corona warmth adds masked coronal tint. Original source arrays remain unchanged.
- Prominence saturation (%) softens intense reds; default 65%, with 100% preserving source saturation. Use Prominences (EV) to reduce brightness independently. The mask is unchanged.
- Calibrate color is enabled for eligible linear RGB input. It balances P99−P1 channel spans using gains only, without background subtraction or additive pedestals; a common highlight scale avoids channel clipping. This preserves constant positive input chromaticity across brightness changes. It is not photometric or ICC calibration. Insufficient shared samples or constant channels disable it. Floating HDR input uses an observed working scale, not a measured sensor saturation level.
- PSB and final display images use a black backdrop. Filter layers retain transparency. Display products are not linear masters or scientific brightness measurements.
- Fast preview and native processing can differ because resampling changes noise and local statistics. Full-resolution verification is authoritative; it does not establish astrophysical reality or eliminate filter artifacts.
Historical Windows 11 validation on 2 November 2026 passed 429 tests, packaged full-resolution export and recipe reopening, cross-drive source loading, and cancellation/close during export. Native Photoshop 2026 recomposition closely matched the application TIFF with Color Correction off. See the Windows validation report for measurements and limits; this predates the current Basic starter and recent layout changes and is not a public-release acceptance claim.
python -m unittest discover -s tests -vmain.py initializes CPU threading before NumPy imports. Numerical filters live in core/, Qt controls in gui/, synthetic checks and fixtures in tests/, and current technical guides and historical reports in docs/. Run scripts/validate_real_image.py --help for the real-data validation utility. Test fixtures and third-party license notices must remain in the repository. Build outputs, caches and local astronomical data are ignored.
Eclipse Image Processor is developed by Francisco Bitto. Its enhancement tools build on the scientific work and software projects credited below. Credit for an algorithm belongs to its original authors; the application adds its own interface, parameter handling, masking, blending and export workflow. Please cite the relevant methods as well as this application when publishing processed images. Copied/adapted third-party code retains its original authorship; see third-party attributions.
NRGF, guided WOW, all three AEL ACHF variants and global continuous RHEF are verified against current AEL 1.4.1 (17029c9, checked 2 November 2026), with matched parameters. Application recipes and optional support extensions remain distinct from AEL defaults; see current acceptance evidence. Presentation and PSB source origins remain as credited below.
AEL credit: Pere Guerra Serra (2026), Agentic Eclipse Library, versions 1.3.3–1.4.2, with component-specific origins recorded in the attribution; the most recent addition is NAFE from 1.4.2. This application includes code copied and adapted for NRGF, NAFE, AEL guided edge-aware WOW, ACHF ISO 01/ISO 04/Angular, the presentation tone curve and the low-level 16-bit PSB writer, under the MIT license. See full attribution.
| Project / authors | Contribution to this application |
|---|---|
| sunkit-image, the SunPy community and contributors | Numerical implementation reference for MGN, FNRGF, RHEF and Upsilon, particularly version 0.6.0. The array implementations here follow the documented conventions with application-specific masks, mappings and layer encoding. SunPy and sunkit-image are reference projects, not application runtime dependencies. See their documentation and license. |
| watroo / wavelets, Frédéric Auchère and contributors | Direct runtime backend for standard and bilateral WOW, B3-spline à trous decomposition and wavelet noise tools; pinned to watroo==0.0.4. The explicit-mask path is an application-specific normalized-starlet variant, not an identical implementation. See the upstream MIT license. |
tse-tools / eclipsetools, Samuli Vuorinen (naavis) |
The optional RGB gain-only neutralization derives its P1/P99 span estimates from color_calibrate at revision 14ae3f7, adding explicit nonfinite-data handling and application integration. The current version applies gains only, omitting upstream background subtraction and pedestal shifts. Copyright © 2025 Samuli Vuorinen; the MIT notice is retained locally. The upstream package is not required at runtime. |
Agentic Eclipse Library (AEL), Pere Guerra Serra (PeterWar / Peter War) |
Source code copied and adapted from AEL 1.3.3 for ACHF ISO 01, ISO 04 and Angular in core/ael_achf.py: radial log-profile fitting, Gaussian/support routines, angular/polar processing and MAD/tanh layer encoding. NAFE (core/ael_nafe.py) copies and adapts the AEL 1.4.2 operator and residual-noise estimator. NRGF (core/nrgf.py) adapts AEL through 1.4.1; guided edge-aware WOW (core/ael_wow.py) and ACHF are verified through current 1.4.1. Global continuous RHEF (core/radial_continuous.py) now adapts current AEL reference arithmetic; its numerical API retains the independent float64 path. The presentation tone curve (core/presentation.py) follows 1.3.3. The production PSB writer in core/psb_export.py copies and adapts AEL’s low-level 16-bit document/layer routines. The research probe directly imports the installed AEL writer. Copyright © 2026 Pere Guerra Serra, MIT; full attribution and retained license. Earlier research on continuous RHEF used AEL 1.3.2 as a reference; see historical comparison. The adapted ACHF and PSB code is bundled; the upstream package is not required for the application, but is required by the opt-in PSB probe. |
EclipseForgeHDR, naugustin77 and contributors |
Source-available research reference, reviewed at revision 8d68626. Comparative reference for support-aware radial models and native-layer preview architecture. The new continuous FNRGF and verification workflow are independently implemented; no upstream source is bundled. See the research notes and implementation checks. |
| Eclipse_HDR, Laurent Voillot | Reviewed at revision 1d5b9b1. Comparative reference for radial-model continuity, tangential angular detail, processing masks and optional RHEF noise confidence. The application implements these ideas independently and does not bundle the upstream GPL scripts; see the research notes. |
| Method | Original scientific reference and relationship to this application |
|---|---|
| FNRGF | Hana Druckmüllerová, Huw Morgan and Shadia Rifai Habbal (2011), Enhancing Coronal Structures with the Fourier Normalizing-radial-graded Filter, The Astrophysical Journal 737, 88. DOI: 10.1088/0004-637X/737/2/88. Fourier radial normalization; numerical conventions also informed by sunkit-image FNRGF, which also cites Hana Druckmüllerová’s doctoral thesis, Application of Adaptive Filters in Processing of Solar Corona Images. |
| MGN | Huw Morgan and Miloslav Druckmüller (2014), Multi-scale Gaussian normalization for solar image processing, Solar Physics 289, 2945–2955. DOI: 10.1007/s11207-014-0523-9; author preprint. Scientific basis of the multiscale Gaussian normalization core. |
| WOW | Frédéric Auchère, Elie Soubrié, Gabriel Pelouze and Éric Buchlin (2023), Image enhancement with wavelet-optimized whitening, Astronomy & Astrophysics 670, A66. DOI: 10.1051/0004-6361/202245345; open-access paper; author preprint. Scientific basis of standard/bilateral whitening and significance-based denoising supplied by watroo. |
| RHEF and Upsilon | Chris R. Gilly and Steven R. Cranmer (2025), Visualization of High Dynamic Range Solar Imagery and the Radial Histogram Equalizing Filter, Solar Physics 300, 174. DOI: 10.1007/s11207-025-02578-x; author preprint. Credit for radial histogram equalization and the Upsilon redistribution function. The compatible mode follows sunkit-image's ranking/branch conventions; the continuous mode adds AEL-inspired interpolation (see the continuous RHEF notes). |
| Larson–Sekanina | S. M. Larson and Z. Sekanina (1984), Coma morphology and dust-emission pattern of periodic Comet Halley. I. High-resolution images taken at Mount Wilson in 1910, The Astronomical Journal 89, 571–578. DOI: 10.1086/113551; original paper via NASA ADS. Credit for the radial/rotational shift-difference method. This application implements a symmetric signed-difference operator for solar-corona enhancement, with its own sampling, support masks, gain control and Photoshop layer encoding; it does not reproduce PixInsight-specific extensions. |
| ACHF / adaptive circular high-pass | Miloslav Druckmüller, Vojtech Rušin and Milan Minarovjech (2006), A new numerical method of total solar eclipse photography processing, Contributions of the Astronomical Observatory Skalnaté Pleso 36, 131–148. Original paper, §4.2, equation (7). The adaptive variant independently implements variable-kernel principles with its own symmetric acceptance, gain and background parameters; it does not reproduce Corona 3.0. The separate AEL ISO 01, ISO 04 and Angular variants contain code copied and adapted from Pere Guerra Serra’s AEL implementation, as credited above. |
| NRGF | Huw Morgan, Shadia Rifai Habbal and Richard Woo (2006), The Depiction of Coronal Structure in White Light Images, Solar Physics 236, 263–272. DOI: 10.1007/s11207-006-0113-6; author preprint. Foundational radial-normalization reference used in the research review; the application exposes NRGF as an independent Multiply layer. |
- Gaussian filtering, histogram ranking, Asinh presentation are established image-processing techniques. Their application-specific composition and controls are implemented here using NumPy and SciPy; no single new scientific authorship is claimed for these standard operations.
- Tangential Detail: credit to Laurent Voillot’s Eclipse_HDR for the angular-blur residual approach studied during implementation; the support normalization, periodic sampling, threshold and radial blend here are independently implemented.
- Color/Overlay compositing: the reference layer reconstruction uses the nonseparable
SetLum/ClipColorand Overlay blending conventions documented in W3C Compositing and Blending Level 1. The Photoshop JSX applies native blend modes; Adobe Photoshop is a separate product.
Thanks to the maintainers and contributors of Python, Qt / PySide6, NumPy, SciPy, OpenCV, Pillow, Astropy, xisf tifffile and psd-tools (PSB structures and verification, MIT). Their roles are summarized under Install and launch. The optional camera-noise development script also uses rawpy.
Each upstream project retains its own copyright and license. Scientific citations and acknowledgments supplement those notices; this repository's MIT license does not relicense its dependencies. Reference comparisons and independent adaptations do not imply endorsement or identical numerical output.
Report reproducible problems through GitHub Issues, including Python and dependency versions, operating system, filter settings and terminal errors.
When citing the software, identify Francisco Bitto, Eclipse Image Processor, v0.7.1 (or the exact release/commit used) and the repository URL. Include the relevant scientific-method citations above for the filters used.
Licensed under the MIT License.





