Astro Session Workflow - Part 4
Part 4
Processing of astro images is more an art than a science. Two people can process the same data and end up with two completely different results.
One thing I’ll say is to beware of YouTube videos - those guys make it look stupidly easy to get fantastic results. I’ve found that it’s not easy!
Processing Workflows
When it comes to processing the stacked and pre-processed images, the workflow I use for a star cluster is different to what I use for a nebula. Generally, a star cluster doesn’t have colour gradients and swathes of shadows and highlights to deal with - it’s stars on a dark background. Nebulae are the opposite.
I’ve divided my workflows into four basic streams. Which one I use depends on the target, and there have been times when I have abandoned an in-progress image to go back and start again with a different workflow.
The four workflows can be described as follows. Some of the workflows are easy to describe but when you unpack them there’s a lot going on.
Workflow 1.
- Generalised Hyperbolic Stretch within Siril
- Export to TIFF
- Open the TIFF with Affinity Photo and complete the post-processing
Workflow 2.
- Generalised Hyperbolic Stretch within Siril
- Use Siril’s starnet++ integration to create two new images - one without stars (starless) and one with only the stars (starmask)
- Export both starnet++ output images to TIFF
- Open the TIFFs with Affinity Photo to process each TIFF separately and then recombine into one layer before completing the processing work
Workflow 3.
- Use Siril’s starnet++ integration to create two new images - one without stars (starless) and one with only the stars (starmask)
- Generalised Hyperbolic Stretch within Siril each resultant image individually
- Export both starnet++ output images to TIFF
- Open the TIFFs with Affinity Photo to process each TIFF separately and then recombine into one layer before completing the processing work
Workflow 4.
- Use Siril’s starnet++ integration to create two new images - one without stars (starless) and one with only the stars (starmask)
- Generalised Hyperbolic Stretch within Siril each resultant image individually
- Recombine into one image in Siril
- Export the recombined image to TIFF
- Open the TIFF with Affinity Photo and complete the post-processing
Stretching the image into a non-linear format
As mentioned in part 3, we have to stretch the linear image into a non-linear form before we can see anything. There are multiple methods of stretching an image and the one that I use most is the ‘Generalised Hyperbolic Stretch’ (or GHS). There’s also the ‘Arc-Sinh Transformation’ and the ‘Histogram Stretch’, which uses something called a ‘mid-tone transfer function transformation (MTF)’. This method of stretching is used by Siril’s Auto-Stretch view.
I’ve never had much success with the Arc-Sinh Transformation as it’s far too easy to have an image that’s too dark in the dark areas and over-blown in the highlights. The Histogram Stretch works by stretching the entire histogram; you can control the dark, mid-point and bright points of the histogram but not much else. Siril’s Auto-Histogram Stretch button gives a reasonable starting point before any further stretching takes place.
Generalised Hyperbolic Stretch
My new go-to stretching method is now the Generalised Hyperbolic Stretch, as it provides very fine control over how much the histogram is stretched, which part of the histogram is stretched, and gives control over how much the stretch factor is scaled by. With the correct parameters it is possible to create a negative-stretch. This seems counter-intuitive, given that we want to stretch our image; but there are times when a portion of the histogram needs to be reduced, rather than increased.
The GHS is the most complex stretching tool in Siril, and has a fairly steep learning curve before you can use it properly. The Siril documentation has an excellent coverage of the GHS, as well as an intensive tutorial.
The GHS is summarised as follows
Simply put, the GHS is able to improve the contrast of a range of brightness levels in an image. For example, if one wanted to better view the details in the medium to high brightness part of a nebula (which is in general very faint in an astronomy image), it would be possible to only select this range for stretching. It is very good at improving the contrast of main objects without making stars too big. The tool is very much based on iterative use, so stretching all the different ranges of brightness in the image one after the other, by small touches.
From the Siril documentation at https://siril.readthedocs.io/en/stable/processing/stretching.html
As the Siril documentation says, it’s best to take many small steps when stretching your image - it’s very easy to over-stretch things. I find that I will make a stretch that I’m happy with, hit the ‘Apply’ button and start the next stretch. If I make a mistake then I can use the ‘Reset’ button to undo all the work I’ve done, back to the last press of the ‘Apply’ button. (Siril also has an ‘Undo’ function, if you need it.)
Sometimes the effects of a stretch are very subtle and hard to see. I will often work to a point where I’m happy with an image and then leave it for several minutes (usually enough time to make a coffee, grab a snack, etc). When I come back, I can tell whether the image is progressing in the right direction or whether I need to go back and try something different. Saving your work as you go (with a different name for each save, obviously) can mean the difference between losing minute or hours of work.
Starnet++ Star Removal
Starnet++ is a fantastic piece of free software developed by Nikita Misiura. It’s separate to Siril, but the Siril development team have added Starnet++ integration into the latest version (1.2.0). You will need to download and install Starnet++ separately from it’s web site. I’ll leave the installation as an exercise to the reader.
Starnet++ is a command-line tool, so does not have a GUI (outside of Siril) to drive it with. The Siril integration provides a simple interface that works well.
For more information about Starnet++, refer to the Siril documentation here: https://siril.readthedocs.io/en/stable/processing/stars/starnet.html
The point at which you use the Starnet++ option (ie, before or after stretching) can have subtle differences in the final image. Starnet++ provides the option to do a stretch of a linear image prior to star removal - an inverse stretch is then applied after star removal. The examples below (if you look carefully) will show this difference.
I usually save my pre-stretched image before carrying out star removal (and letting Starnet++ do it’s stretch / star removal / inverse stretch) then do my stretching of the un-separated image before running Starnet++ on the stretched image. I end up with 4 images and can then determine which pair looks best.
Layer Recombination
There are two methods I use for recombining the starless / starmask images after I’ve worked on them separately. I can use the ‘Star Recomposition’ feature in Siril, or I can use blended layers in Affinity Photo.
If I am unable to blend the layers in a manner that I like with Affinity Photo, then I will try Siril’s, and see which image I like the best.
With Affinity Photo, there are multiple blending modes available to you. I’ve looked at the options and the ‘Normal’ method seems to give the best results. Be aware that you may need to make significant changes to the underlying layer’s brightness / contrast / colour saturation to avoid it looking dull, dim or washed out.
I’ve found that putting the starless image as the lower layer and the starmask on top with an Opacity setting of around 40% looks the best.
Manipulation with Affinity Photo
When I’m working on the two starless / starmask layers in Affinity, I’ll work on each layer separately to get each one looking as good as I can - or to a stage where I’m happy with how it’s turned out. These operations are usually a noise reduction, potentially a background removal, then transformations such as brightness and contrast, exposure (if needed), colour saturation, and perhaps a small shift in the white balance. I can’t give you a recipe to follow, as each image is different, and each astrophotographer has a different view in their head as to how they want the image to look.
One thing to point out - when working on each starless / starmask layers, put all the manipulation layers as children to their relevant layer. So if I’m working on the starless layer then I put the brightness manipulation layer as a child to it. This way I restrict the impact of each manipulation layer to it’s respective parent.
When I do have a recombined image I often need to work further with the overall image and add further mani[manipulations], and I place these manipulation layers above the starless / starmask layers.
Processing an image of NGC2070
The following images are steps in the processing of my latest image of NGC2070 (The Tarantula Nebula).
The first image shows the unstacked, unaltered image in Siril, in linear mode. Note that the image area is almost pure black,
The second image shows the same image in AutoStretch mode, giving us an idea of how the data will look after it’s been stretched. As explained previously, you can see the overall green tinge to the image.
Now we see the image after a Photometric Colour Calibration and Green Noise Removal. We’re still in AutoStretch mode, but the overall colours of the final image can be seen clearly now.
I’ve now stretched the image using Siril’s GHS Transformation. Comparing it to the previous image, it’s a bit darker and the nebulosity is more difficult to see. However, the very bright core of the nebula is not blown out to pure white. With further careful stretching followed by manipulation with Affinity Photo, the darker areas can be brightened without risk to the nebula core.
We now get to compare the differences in the final image caused by the application of Starnet++ in different steps. The first image (Image 6) is the result of processing the unstretched image in Starnet++, whilst Image 7 is the result of Starnet++ processing after the GHS stretch operations.
Similarly, we can see the difference in the corresponding starmask images. Image 8 is the unstretched image, whilst Image 9 is the stretched image.
The Final Result
Looking at the final image below, I used the unstretched images because the brighter background of Image 7 (the stretched image) would have been difficult to cleanly remove without damaging the fainter areas of the nebulae. I could have used the stretched starmask (Image 9) because the stars are smaller and without halos, but it appears that I didn’t. I had my reasoning at the time, but I’m unable to recall what it was.
If you’re read this far, then I hope that you have a better understanding of what’s required to create an astrophotographic image. Many people think it’s a matter of pointing a camera at the sky and great images will follow.
These images were captured with a colour camera. If I had a monochrome setup, the amount of work involved increases dramatically, depending on how many filters you use to capture the necessary colour information. At a minimum, a monochrome setup uses 3 filters - Red, Green and Blue. At a maximum, it would use 7 - Red, Green, Blue, Luminance, Hydrogen-Alpha, Sulphur-ii and Oxygen-iii. (You can also get filters for other wavelengths, such as Nitrogen, but they’re relatively uncommon.) Most monochrome imagers use Luminance, Hydrogen-Alpha, Sulphur-ii and Oxygen-iii as their primary colour sources.