Cookie consent

AstroBin saves small pieces of text information (cookies) on your device in order to deliver better content and for statistical purposes. You can disable the usage of cookies by changing the settings of your browser. By browsing AstroBin without changing the browser settings, you grant us permission to store that information on your device.

I agree
Contains:  Trifid nebula, M 20, NGC 6514
Getting plate-solving status, please wait...
Trifid Nebula, M20, 


            Jason Tackett
Trifid Nebula, M20

Trifid Nebula, M20

Technical card

Resolution: 2800x2000

Dates:July 25, 2014

CLS-CCD: 1x394" ISO800
CLS-CCD: 13x600" ISO800

Integration: 2.3 hours

Darks: ~50

Flats: ~30

Bias: ~60

Avg. Moon age: 28.23 days

Avg. Moon phase: 1.91% job: 336425

RA center: 270.622 degrees

DEC center: -22.952 degrees

Orientation: -176.619 degrees

Field radius: 0.590 degrees

Locations: NASA Skywatchers dark site, New Kent, VA, United States


The Trifid Nebula M20 is an amazingly complex and photogenic nebula in the constellation Sagittarius. It contains a red H-alpha emission nebula with dark absorption nebula lanes which gives the object distinct lobes. Above the object is a blue reflection nebula where interstellar dust reflects the light of bright blue stars [Wikipedia].

I have wanted to image this object for a long time, so I was glad to have dark skies and a clear southern view a couple of weeks ago. Although sky transparency was very good, the seeing was not all that great which conspired with the low altitude of this object to send my autoguiding wiggling all over the place and fattened the stars. I had planned to spend the entire night on the Trifid Nebula, but clouds shut us down after just under 2.5 hours of exposure. Regardless, there was plenty of signal here to work with. For the first time I chose ISO 800 with the goal to retain star colors that can be lost in saturation at ISO 1600. This decision really paid off as the stars were colorful right off the bat in the linear image.

In post-processing I threw every trick I have learned to date at this image – particularly following Vincent Peris’ Dynamic Range and Local Contrast tutorial which really brought out details at large and small scales in the emission nebula [Peris reference below]. I am quite proud of how my mask building skills are improving, especially with the mask to select and enhance the faint blue reflection nebula (step 17a).

I really like the colors of the reflection and emission nebulae in the final image, but I noticed that most other images show the emission nebula as pinkish/magenta. I suspect this is because the combination of blue reflection nebula overlapped with the red emission nebula yields magenta. However, with all of my best efforts I was not able to bring out that magenta color and so I get the feeling that this color was not recorded by my equipment - or at least not sufficient enough to bring out the color. I have a couple of hypotheses that could explain this, though I have not confirmed them. First, I used an Astronomik CLS-CCD filter which has a band-pass in the blue/green from 450-520 nm. This may have extinguished any deep blue or violet colors that could have contributed to the magenta nebula. A quick Google search of other images of the Trifid Nebula taken with this filter shows many examples with colors similar to mine; i.e., without magenta so there could be something to this. Second, atmospheric extinction could have zapped some of the blue due to the low elevation of this object making it easily overwhelmed by the red H-alpha emission. The Trifid Nebula reaches ~30 degrees maximum altitude above the horizon at my location where the extinction for blue is about 10% greater than that of red [Bracken, 2013], so this is also a plausible contributor. Still, the colors came out pretty nice.

Processing Workflow (PixInsight)

1. Calibrate light frames using darks, bias, flats
2. Integrate using Sigma rejection method (ImageIntegration)

1. Crop image to remove dithering borders (DynamicCrop).
2. Remove gradients (AutomaticBackgroundExtraction; subtraction).
3. Neutralize background (BackgroundNeutralization).
4. White balance (ColorCalibration using stars as reference).
5. Set luminance coefficients to 0.333333 for RGB channels (RGBWorkingSpace).
6. Non-linear stretch (MaskedStretch script; Target median: 0.2)
7. Mild stretch to increase contrast by lowering midtones and raising black point (HistogramTransformation).
8. Compress dynamic range of large scale features (HDRMultiscaleTransform; Number of layers: 6; w/ star mask)
9. Compress dynamic range of medium scale features (HDRMultiscaleTransform; Number of layers: 4; w/ star mask)
10. Restore star colors by compressing dynamic range of stars using method given by Vincent Peris’ “Dynamic Range and Local Contrast” tutorial. Check out Peris reference below for a complete description of his excellent technique. Here is a brief summary:
10a. Clone linear image at step 5 above and execute MaskedStretch script with target image median equal to that of the image stretched with HistogramTransformation.
10b. Generate mask to select largest differences between the previous two images by taking difference of these stretched images with PixelMath, ATrousWaveletTransform to remove large scale features (wavelet scales > 2), MorphologicalTransformation (dilation) to expand selection.
10c. Clone both stretched images and keep only residual wavelet layers (ATrousWaveletTransform).
10d. Transfer small scale structures to image stretched with HistogramTransformation through mask generated in step 10b (PixelMath; applied 6 times).
11. Reduce luminance noise (ACDNR, target luminance; w/ luminance mask).
12. Reduce chorminance noise (ACDNR, target chrominance; w/ luminance mask).
13. Increase local contrast in nebulae (LocalHistogramEqualization; w/ star mask).
14. Initial color saturation.
14a. Extract CIE *L channel (ChannelExtraction).
14b. Recombine L image, increasing saturation (ChannelCombination).
15. Reduce green (SCNR).
16. Contrast curve (CurvesTransformation).
17. Increase brightness of faint blue reflection nebula
17a. Build mask selecting faint blue nebula by first extracting R, G and B channels using ChannelExtraction. Create mask using PixelMath expression: B + G - R - star_mask. Blur heavily by keeping only residual layer with AtrousWaveletsTransform, stretch with HistogramTransformation and repeat. When all of blue reflection nebula is selected, remove stars as last step using PixelMath: reflectionNebulaMask - star_mask.
17b. Increase brightness and saturation (CurvesTransformation; w/ mask in previous step)
18. Color saturation of blues and reds (ColorSaturation; mask selecting all nebulae constructed from a blurred range mask with stars subtracted in last step with PixelMath).
19. More luminance noise reduction (ACDNR, target luminance; w/ luminance mask).
20. Remove dark outlier pixels which smooths star edges [Shwarz RemoveDarkPixel process using PixelMath]
21. Sharpen nebula (MultiscaleMedianTransform, target luminance).
22. Background is kind of rusty orange at this point due to a color imbalance - too much reds and greens. So, reduce dark greens and dark reds (CurvesTransformation, R and G channels).
23. Small contrast curve (CurvesTransformation).
24. Looks like I went overboard saturating the red emission nebula. Desaturate reds (ColorSaturation).
25. More luminance noise reduction (ACDNR, target luminance; w/ luminance mask)
26. Final sharpening (MultiscaleMedianTransform; w/ mask selecting nebulae only).
27. DynamicCrop to 5x7 aspect ratio.
28. Set ICC profile to sRGB for web publishing (ICCProfileTransformation).

Charles Bracken
The Deep Sky Imaging Primer, 2013 (book)
Vincent Peris, “Dynamic Range and Local Contrast” tutorial:
Manfred Schwarz galaxy tutorial:
Wikipedia Trifid Nebula entry



Jason Tackett
License: Attribution Creative Commons

Sky plot

Sky plot


Trifid Nebula, M20, 


            Jason Tackett

Made possible by

O'Telescope BackyardEOS