CaLIGHTs dynamic range compression

CaLIGHTs Version 3.1.9

One thing I have noticed when I am preparing my astrophotos is that whenever I stretch a stacked image to reveal the faint details this also causes the bright stars to bloat and become pure white. I could never get away from this issue. This is because the dynamic range in most DSO astrophotos is huge! Most of this dynamic range is gobbled up by the very bright stars with only a tiny bit of the dynamic range allocated to the faint nebulosity and/or galaxies. Over the last few years I have added two key features to CaLIGHTs that you can use to tame these bright stars and allocate lots of dynamic range to those faint fuzzies.

1)A custom Multiplier option. CaLIGHTs tries to determine how to optimize the data storage for your LIGHT frames. Most DSLRs store the pixel values in their RAW file formats in 12 or 14 bits. All this means that the possible pixel values range from 0 to 4095 for 12 bit DSLRs and 0 to 16385 for 14bit DSLRs. CaLIGHTs uses it’s Multiplier to expand both of these to a 0 to 65,535 range which is optimal for unsigned 16 bit datafiles. Most dedicated AstroCAMs create LIGHT frames with pixel values that range from 0 to 65,535. I also gave the user the ability to specify a custom Multiplier which, right now, has a lot of range.

2)StarSatGuard [SSG] feature. This was invented to cater for FLAT compensation. When FLAT compensation is applied to a LIGHT frame it is typical for the stars at the edges of a LIGHT frame to be significantly brightened to cater for vignetting. It is common for the pixel values of these stars to exceed 65,535 which causes them to be clipped. Clipping causes the star color to be lost. SSG was invented to detect these special cases and automatically reduce the magnitude of these stars so that they are not clipped.

When I tried using very large custom multipliers, without using SSG, I noticed that it was much easier to pull out the faint details in my astrophotos. Unfortunately, the bright stars were all being clipped, became bloated in size and turning pure white. These stars looked ugly.

When I also enabled SSG, in CaLIGHTs v3.1.8, it was able to eliminate all of the bright star clipping. The bright stars were able to maintain their color…if they were not already clipped when the LIGHT frame was taken. The star bloating did not happen!  I experimented with some LIGHT frames and found that there were a lot more bright stars. This was because only the brightest stars were affected by SSG.

After a bit more head-scratch’n I decided to change SSG so that it was able to maintain the relative brightness of the majority of the stars. SSG now samples a lot more stars. It then determines what the maximum pixel value is for the brightest star and uses this to determine what the relative brightness needs to be for all of the other stars. The end result is that the brightest star is not clipped. SSG forces the maximum pixel value to be 65,534. The other stars typically keep their original brightness or are slightly dimmed. This results in a calibrated LIGHT frame where the stars have a natural variation in brightness even though the nebulosity is much brighter. What did remain was larger halos which can be handled during post processing…if you feel it’s required.

The net result of combining large custom Multiplier values with SSG is a Dynamic Range Compression. Much more of the available dynamic range in your LIGHT frame is now made available for the faint nebulosity and dust. The allocation of the lion’s share of the dynamic range which is typically allocated to the bright stars is significantly reduced while preserving star color, brightness and size. The trade-off is that star halos can be significant and required special attention during post processing.

An example:

I decided to use StarTools as an unbiased judge. Here are two images. For each image I stacked 22 LIGHT frames that were 450 second exposures. All of these LIGHT frames were calibrated using CaLIGHTs as discussed here. Within Startools, I clipped 5 pixels off the perimeter, wiped the image as a narrowband image with a 4 pixel dark anomaly filter and all other parameters at their default values. Finally, I used FilmDev and repeated clicked the Home In button. I believe that repeatedly clicking the Home In button imposes a criteria target that brightens the image until the pixel values approach a limit that ensures no saturation.

Multiplier = 1

This Multiplier = 1 image is what I would typically get before I stumbled across this custom multiplier and SSG method. StarTools limits the image brightening because the two very bright stars use up all the available dynamic range. It is possible to push the digital development further but this has to be done cautiously.

Multiplier = 5

Many of the stars in this Multiplier = 5 image are slightly dimmer which is as expected. The SSG logic considers all of the brightest stars which includes stars that have been brightened due to FLAT compensation. All the stars have retained their color and relative brightness to each other. The nebulosity in the Multiplier = 5 image is much brighter (500% in fact).

Additional Details about how I processed the image

My LIGHT frames for my QHY294C camera typically use a Multiplier = 1 because the pixel values range from 0 to 65,535. When I used a custom Multiplier of 5, this meant the pixel values were 500% larger. A bright star which originally had a few pixel values clipped at 65,535 would increase to 327,675 which is crazy big. The SSG code was able to reduce this star’s pixel values back to 65,534 while retaining whatever color information was present. The other benefit was that the bright stars did not bloat. I noticed that the minimum pixel values in the resulting calibrated LIGHT frames were now around a value of 700. I decided to use a custom output pedestal of -500 which brought the minimum pixel values down to 200. This gave me even more available dynamic range which SSG was able to take advantage of.

Multiplier = 5 Fully Processed

This is a fully processed Mult=5 +SSG image. Pulling out the details in the Nebulosity was easy.

For those using a 14 bit DSLR you would typically start with a multiplier of 4. 12 bit DSLRs would typically start with a multiplier of 8. For these DSLRs the custom multiplier I used here would be equivalent to 20 for a 14 bit DSLR and 40 for a 12 bit DSLR.

I have not asked the Startool folks about this method but I believe that multiplying all the pixel values by a constant still respects the noise tracking features of Startools. The stars have been dramatically attenuated by SSG, but I have always struggled taming bright stars and this gives me more control of this situation.

A custom Multiplier as large as what I used here is really pushing the limits of usefulness. I typically use a custom multiplier between 2 and 5 with great results. Many of the 2022 photos on my website used custom multipliers to help pull out faint details.

I believe that using the custom Multiplier and SSG code has made it easier for me to use Startools. I’m sure this would also be true for other digital development software packages. It certainly has allowed me to be more successful with my 2022 astrophotos. It also helped me to stay motivated and dig deeper.

Starting with version 3.1.9 of CaLIGHTs the SSG feature has been redesigned to support this large dynamic range compression.

Peter

Leave a Comment