Skip to content
Narrowband

Narrowband Normalisation

Workflow card and learning notes for the NarrowbandNormalization process by Bill Blanshan and Mike Cranfield — balancing SII/Ha/OIII intensities without clipping bright cores.

PixInsight StarXTerminator

Workflow card and learning notes for the NarrowbandNormalization process by Bill Blanshan and Mike Cranfield.

Quick reference. Process → Color Calibration → NarrowbandNormalization. Real-time preview is on by default. Image must be background-neutralised; star removal strongly recommended.

Workflow at a glance

Data typePaletteLightnessKey controlsApply when…
OSC dual-narrowband (non-linear, starless)HOOHa (default) or PreserveBlend Mode 1/2/3, OIII Boost, ShadowStars removed, BG neutralised, image stretched
Mono SHO/HSO (non-linear, starless)SHO or HSOHa or SIIOIII Boost, SII Boost, Shadow, SCNRStars removed, BG neutralised, image stretched
Mono SHO/HSO (linear)SHO or HSODisabled in linearBoosts and Shadow only — be gentleBG neutralised; stretch afterwards (GHS/HT)

Sensible starting settings

ControlOSC HOOMono SHO (non-linear)Mono SHO (linear)
Lightness ModeHaHan/a (disabled)
Blend Mode (HOO only)2 — Natural HOO
OIII Boost0 → ease up0 → ease up0 (very small steps)
SII Boost0 → ease up0 (very small steps)
Shadow Control0 → small +0 → small +0 (sensitive in linear)
Highlight Reduction000
Brightness000
SCNROff0.5–1.0 if green cast0 (apply later)

1. What this process actually does

NarrowbandNormalisation is a process — not a script — that balances the relative intensities of the SII, Ha and OIII channels of a narrowband image without clipping the bright cores. It replaces the older PixelMath approach (also originally by Bill Blanshan) with a real-time, parametric, fully reversible interface.

How the maths works (in plain English)

  • It measures the average positive deviation from the median of each channel — a clipping-resistant proxy for “how bright is this channel really”.
  • It computes the ratios between channels and applies a Midtones Transfer Function (MTF) curve stretch to the weaker channels until the deviations match.
  • Because the maths uses an MTF stretch rather than a linear multiply, weak signal lifts much more than the bright cores, so highlights stay clean.
  • Everything is non-destructive while the dialog is open — sliders are reversible, individually resettable, and the whole process is resettable in one click.

Why this matters compared with PixelMath. The old PixelMath expressions were brilliant but blind: you set numbers and hoped. The process gives a real-time preview so you can see the result of every slider movement, which is faster and lets you build intuition for the controls. Mike Cranfield rebuilt the maths under the bonnet so it is more robust than the original PixelMath, particularly with respect to clipping.

2. Installing the process

One-time setup. Once installed, the process appears under Process → Color Calibration → NarrowbandNormalization (some PixInsight builds will also list it under Process → All Processes).

  1. Open Resources → Updates → Manage Repositories.
  2. Click Add, paste https://www.cosmicphotons.com/pi-modules/narrowbandnormalization/, then OK.
  3. Run Resources → Updates → Check for Updates.
  4. Accept the install, close PixInsight, let the updater run, then reopen.
  5. Confirm the process exists under Process → Color Calibration → NarrowbandNormalization.

Version requirement. Requires PixInsight 1.8.9-1 or later (signed-script era). The current version is stable on 1.8.9 builds and on 1.9.x Lockhart. Earlier PixInsight installations will refuse to load it.

3. Preconditions before you launch the process

Get these right before opening the dialog and the rest is comparatively easy.

StepWhy it matters
Background neutralisedThe maths assumes the channel medians are a sensible reference. A skewed background (e.g. a strong red gradient) will pull the ratios off and cause the boosts to over-correct.
Stars removed (StarXTerminator)The process modifies channel colour. With stars in the frame, star colours go strange — magenta halos, green cores. Run the process on the starless image, then screen the stars back at the end.
Image stretched (for full functionality)Lightness modes are only available on non-linear data. You can run on linear data, but with reduced control. For SHO especially, stretch first.
Mild noise reduction (optional)Shadow lifts will amplify whatever noise is in the weaker channels. A light NoiseXTerminator pass first can pay back later.

4. The interface explained

Real-time preview

Top of the dialog. Toggle on first — without it the rest of the controls are guesswork. The preview palette is auto-selected from the workflow you choose, but you can override it.

Palette selector

PaletteMaps toUse for
HOOR = Ha, G = synthetic, B = OIIIOSC dual-narrowband (one-shot colour, dual-band filter)
SHOR = SII, G = Ha, B = OIII (Hubble)Mono three-channel narrowband, Hubble palette
HSOR = Ha, G = SII, B = OIIIAlternative Hubble-style mapping with Ha as red
CustomUser-definedAnything outside the standard palettes

Lightness modes

Lightness mode controls which channel (or combination) drives the perceived brightness of the final image. Available on non-linear data only.

ModeBehaviourWhen to use
OffUses the normalised image’s own luminance.When the normalised result already looks balanced and you want no further lightness manipulation.
PreserveUses the original image’s luminance.When the colour balance has shifted but you want the structural detail to look exactly as it did before.
HaUses Ha as the lightness channel.Default starting point. Brings out nebula structure cleanly because Ha typically has the highest SNR.
SIIUses SII as the lightness channel.Sometimes cleaner than Ha for very SII-bright targets. Worth trying side by side.
OIIIUses OIII as the lightness channel.Rarely useful in practice — OIII is usually the noisiest channel. Try, but be prepared to switch back.

Blend modes (HOO only — synthetic green)

OSC dual-band data has no real green channel, so the process synthesises one. The blend mode controls how it does that — this is the single biggest aesthetic decision in HOO processing.

ModeRecipeVisual character
1Blend of Ha + normalised OIIIHubble-style look — leans towards golden/teal contrast.
2Blend of original OIII + normalised OIIINatural HOO look — most “honest” rendering of the data.
3Stronger OIII emphasisPushes blue/teal harder — useful when OIII is faint and you want to hero it.

Channel boosts

  • OIII Boost — lifts OIII visibility further after normalisation. Useful when the channel is genuinely weak. Move in small increments.
  • SII Boost — SHO/HSO only. Lifts SII visibility. Often needed because SII is typically the weakest channel in mono SHO.
  • Shadow Control — reveals faint signal in shadows. Pushed too far it introduces a blue cast (because OIII shadow noise lifts faster than the others). Use sparingly.
  • Highlight Reduction — protects bright regions from clipping. Most images don’t need it; reach for it if cores are blowing out.
  • Brightness — global curve stretch applied after normalisation. Convenient but you can equally do this with HistogramTransformation afterwards.

SCNR (built in)

Range 0–1, where 0 is off and 1 is full removal of the green cast. Useful for SHO/HSO where Ha is mapped to green and dominates. For HOO with synthetic green you usually leave this off.

5. Workflow A — OSC dual-narrowband (HOO)

For ASIAir / Seestar / dual-band filter data with one-shot colour cameras. Assumes you have already extracted the Ha and OIII channels and combined them into an HOO RGB image, with stars removed and background neutralised.

  1. Open the non-linear, starless HOO image. Run BackgroundNeutralization first if you haven’t already.
  2. Process → Color Calibration → NarrowbandNormalization. Toggle on Real-time preview.
  3. Set Palette to HOO.
  4. Set Lightness Mode to Ha (this is the safest starting point).
  5. Cycle through Blend Modes 1, 2, 3 watching the preview. Pick whichever fits the target — Mode 2 is the most neutral default.
  6. Adjust OIII Boost in small increments. Stop the moment OIII regions look how you want them; don’t chase it.
  7. Use Shadow Control sparingly. If you see blue creep into the background, back it off.
  8. Apply.
  9. Continue with curves, saturation, masks, sharpening, then star reintegration.

Editorial note on HOO blend modes. The transcripts disagree slightly on which blend mode to pick. Mode 2 (Natural HOO) is the most defensible starting point because it preserves the OIII data character. Mode 1 (Hubble-style) is more “Instagram-friendly” but leans towards a stylised look that some find oversaturated. Try all three and pick by eye — there is no objectively correct choice.

6. Workflow B — Mono SHO / HSO (non-linear)

For mono camera narrowband data with separate SII, Ha and OIII subs, combined into an SHO or HSO RGB image, stretched, with stars removed.

  1. Open the stretched, starless SHO/HSO image. Confirm BackgroundNeutralization has run.
  2. Open NarrowbandNormalization → Real-time preview on.
  3. Set Palette to SHO (Hubble) or HSO depending on your channel mapping.
  4. Set Lightness Mode to Ha. If Ha is unusually noisy, try SII instead.
  5. Adjust OIII Boost first, then SII Boost. Most SHO images need both.
  6. Use Shadow Control to reveal faint structures, watching for a blue cast in the background.
  7. Set SCNR somewhere between 0.5 and 1.0 if a green cast appears (Ha-as-green can dominate before normalisation lands).
  8. Apply.

Saturation comes after, not before. It is tempting to bump saturation while you have the preview open. Don’t. Apply NarrowbandNormalization first, then do saturation as a separate Curves or ColorSaturation step. The normalisation maths is calibrated for the input colour space, and pre-saturating the image distorts the channel ratios it is trying to balance.

7. Workflow C — Linear SHO / HSO

Less common, but useful when you want to preserve linear processing flexibility (e.g. you plan to inject Ha as luminance manually after stretching).

  1. Confirm BackgroundNeutralization has run on the linear image.
  2. Optionally remove stars on the linear data.
  3. Use linked ScreenTransferFunction so the preview reflects the stretched look.
  4. Open NarrowbandNormalization. Note: lightness modes are disabled in linear mode.
  5. Move boosts and Shadow Control in much smaller increments — controls are far more sensitive on linear data.
  6. Apply.
  7. Stretch the result with GeneralizedHyperbolicStretch (GHS) or HistogramTransformation.
  8. Optionally inject Ha as luminance via LRGBCombination.

Why bother with linear? Most users get equivalent results from the non-linear workflow with less risk. The linear workflow earns its keep when you want full control over the stretch curve afterwards (e.g. very dim targets where you need GHS to handle the shadows precisely), or when you want to keep all your tools — deconvolution, NoiseX, BlurX — running in their preferred linear space before you commit to colour.

8. Post-processing after normalisation

NarrowbandNormalisation produces a strong base — the rule of thumb from the videos is that you are 80–90 percent there after Apply. The remaining 10–20 percent is standard finishing, in roughly this order:

  1. ColorSaturation or Curves saturation pass — gentle global lift first, then selective.
  2. Build colour masks (e.g. yellow, blue) and run Curves through them for selective contrast.
  3. NoiseXTerminator if shadow lifts have made noise visible.
  4. BlurXTerminator (Sharpen mode if not already done) on the colour image.
  5. Star reintegration (PixelMath screen of the original star image, or ScreenStars).
  6. Final HistogramTransformation pass for black point.

9. Tool reference — menu locations

ToolWhere to find itPurpose in this pipeline
NarrowbandNormalizationProcess → Color Calibration → NarrowbandNormalizationThe tool itself. SII/Ha/OIII intensity equalisation.
BackgroundNeutralizationProcess → Color Calibration → BackgroundNeutralizationRequired precondition — sets channel medians sensibly.
StarXTerminatorProcess → All Processes → StarXTerminatorRemoves stars before normalisation; keeps star colours from going strange.
ScreenTransferFunctionProcess → IntensityTransformations → ScreenTransferFunctionLinked STF for previewing linear images while normalising.
HistogramTransformationProcess → IntensityTransformations → HistogramTransformationStretching after linear-mode normalisation; final black point.
GeneralizedHyperbolicStretch (GHS)Process → IntensityTransformations → GeneralizedHyperbolicStretchPreferred stretch for difficult linear data after normalisation.
SCNR (standalone)Process → NoiseReduction → SCNRStandalone version of the green-removal control built into the process.
LRGBCombinationProcess → ChannelManagement → LRGBCombinationManual Ha-as-luminance injection after linear workflow.
CurvesTransformationProcess → IntensityTransformations → CurvesTransformationPost-normalisation contrast, saturation, channel-by-channel tweaks.
ColorMask (Cosmic Photons)Process → MaskGeneration → ColorMaskSelective colour masks for finishing — same author family as NBN.
NoiseXTerminatorProcess → All Processes → NoiseXTerminatorCleans up shadow noise revealed by Shadow Control lifts.
BlurXTerminatorProcess → All Processes → BlurXTerminatorSharpening on the final colour image (Sharpen mode).

10. Troubleshooting matrix

SymptomLikely causeFix
Process won’t install or doesn’t appear in menu after restartPixInsight version too old, or repository URL typoConfirm version 1.8.9-1 or later. Re-add repository, ensure trailing slash on URL, run Check for Updates again.
Lightness mode controls are greyed outImage is linearStretch the image first (GHS or HT), or accept reduced control and use linear mode.
Stars look magenta or have green cores after ApplyStars were not removed before running the processUndo. Run StarXTerminator, run normalisation on the starless version, then screen stars back at the end.
Background develops a strong blue castShadow Control pushed too high, lifting OIII noiseReduce Shadow Control. Re-check BackgroundNeutralization ran cleanly first.
Bright cores clip after ApplyBrightness or boosts pushed past where the MTF curve can compensateReduce Brightness/boosts. Try Highlight Reduction. Reset and ease in more slowly.
Colours look flat after normalisationNormal — saturation comes after this stageApply, then run ColorSaturation or a Curves saturation pass. Don’t pre-saturate.
Strong green cast after SHO normalisationHa-mapped-to-green dominanceIncrease the built-in SCNR slider towards 1.0, or apply standalone SCNR after.
OIII lift looks plausible but the image looks “wrong”Wrong palette selected for the channel mappingConfirm SHO vs HSO matches how you actually combined channels.
Linear mode gives wildly different results than expectedControls are far more sensitive on linear dataReset, then move sliders by tenths of a unit rather than full units.
Real-time preview not updatingToggle off, large image, or stale preview windowToggle real-time preview off and on. Check the preview window is current.

11. Per-session checklist

Tick through this when processing. Mirrors the workflows above without the explanation.

Before you open the process

  • Image is calibrated, integrated, gradient-corrected.
  • BackgroundNeutralization has run.
  • Stars removed (StarXTerminator). Original saved separately for re-screening later.
  • Optional: light NoiseXTerminator pass on weak channel.
  • Image stretched (for non-linear workflow). Linear users: STF linked.

Inside the process — first pass

  • Real-time preview ON.
  • Palette set correctly: HOO / SHO / HSO.
  • Lightness mode set: Ha (default) or Preserve. Try SII if Ha noisy.
  • HOO only: Blend Mode chosen (1 / 2 / 3) by visual taste.
  • Boosts started at 0, eased up only as needed.
  • Shadow Control nudged up only if faint signal needs revealing.
  • SCNR (SHO/HSO only) set if green cast persists.
  • Reset individual sliders if they over-corrected.

After Apply

  • Saturation pass (ColorSaturation or Curves).
  • Colour masks for selective contrast adjustments.
  • NoiseXTerminator if shadow lifts revealed noise.
  • BlurXTerminator (Sharpen mode) on colour image.
  • Stars screened back in.
  • Final HistogramTransformation pass for black point and a final crop.

12. Sources

This card is built from three video walkthroughs (Cuiv the Lazy Geek, Bill Blanshan’s in-depth tutorial, and an “Ultimate Normalisation Tool” walkthrough) cross-referenced against the Cosmic Photons repository pages and the published PixInsight forum thread, to reconcile minor inconsistencies between the videos.

Related notes