I am attempting to follow Adam Block’s tutorial for utilizing the Normalize Scale Gradient Script (NSG) as well as his screen blending technique to enhance the images I obtained.


  1. Blink
  2. WeightedBatchPreprocessing
    1. Cosmetic Correction, Registration, and Image Integration
  3. NormalizeScaleGradient
  4. PhotometricColorCalibration
  5. ? Dynamic Background Extraction
  6. ? Noise Reduction
    1. ? SCNR
    2. ? TGVDenoise
    1. ? MultiscaleMedianTransform

1. Blink

I start by reviewing my light frames. I generalize remove images for the following reasons:

  • Star Trails from bad tracking or wind
  • Objects such as trees or buildings
  • Non-uniform clouds (streaky that would make a complicated gradient)
  • Strong sources of light pollution (such as the sun or streetlights)

If I have any reason to suspect, I may inspect any flats or other calibration frames I collect for issues as well.

After the images have been individually calibrated and debayered, I will make another pass at filtering out images using the blink process.

2. Weighted Batch Pre-Processing

I generally take a set of flat frames at the end of each imaging session. I calibrate the light frames against the flats, as well as darks and dark-flats.

I apply cosmetic correction as a template, and if I am collecting a large number of images – I utilize the “generalized extreme studentized deviate” rejection method with the following settings:

  • ESD Outliers: 0.15
    • Expected maximum fraction of outliers. For example, a value of 0.2 applied to a stack of 10 pixels means that the ESD algorithm will be limited to detect a maximum of two outlier pixels, or in other words, only 0, 1 or 2 outliers will be detectable in such case. The default value is 0.3, which allows the algorithm to detect up to a 30% of outlier pixels in each pixel stack.
  • ESD low relaxation: 1.00
    • * ESD Rejection: New low relaxation parameter. This is a relaxation factor for rejection of low pixels implemented in the Generalized Extreme Studentized Deviate (ESD) outlier detection algorithm. The larger the value of this parameter, the more permissive the ESD algorithm will be for rejection of pixels with values below the median of each pixel stack. This can be useful to reject less dark pixels on sky background areas and extended nebular regions, where high dispersion induced by noise may lead to excessive detection of false outliers.

For more references in the ESD script see below

I go ahead and let the process perform Image Registration with Drizzle data, and then let it perform Image Integration. For the NSG process, we do not utilize Drizzle, but it is nice to keep it in case I want to go back and apply a different process.

When I am planning to run the NSG process, I turn off Subframe Weighting, as the NSG script computes its own weights for Image Integration.

I also enable Image Integration and set the Registration Reference frame to “auto”. It is not best practice to set the reference frame to auto, its probably better to select the frame that is best to the final composition you want.

I apply image integration because I just want to keep a reference of what the baseline image would look like as I tweak the image in post-processing.

3. NormalizeScaleGradient

The purpose of the normalize scale gradient script is to normalize the sky background to a reference image.

For reference see below:


  1. Histogram Transformation
  2. Starless Image
    1. ? Adjust Curves
    2. ? Deconvolution

Total integration time: 6h30m

Multi-Night Comparison

Left Single Night / Right 3 Nights
Last modified: August 25, 2021



Write a Reply or Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.