Friday, July 1, 2016

Antares region with Saturn, first night with Vixen Polarie Star Tracker

Antares region with Saturn taken near Cobb Branch, VA on June 8th, 2016. Canon 550D, Canon 50mm f/1.8 lens @ f/4. Total exposure, 3.2 hours (117 x 100 sec) @ ISO1600 on Vixen Polarie mount. 
Full resolution image here:

Here is my image of the Antares region with Saturn as a guest “star”, taken soon after the last new moon timeframe which was also our first clear night in months. Desperate for any opportunity to get back out and image, I drove 1.5 hours from my home on a weeknight to a deserted road among the peanut farms of southern Virginia where light pollution was minimal in the southern skies. The four day old moon illuminated the sky for the first hour of acquisition, but the remaining two hours yielded images with good contrast between the foreground dust and background. This was my first time at this location which I discovered by consulting light pollution maps and Google Maps satellite imagery. The Milky Way was unmistakable during the whole time I was there and not a single car passed during the night. I shut everything down around 2:30am after coming to my senses and realizing that I’ll need to be getting ready for work within 90 minutes of returning home. It was a sleepy day at the office the next morning, but I was well rewarded by over three hours of dark-sky exposure time on the Antares region which I have been anxious to capture for years.

This was also my first serious efforts with my Canon 50mm f/1.8 lens and Vixen Polarie mount. The camera lens needed to be stopped down to f/4 to suppress lens aberrations to my satisfaction. Regardless, there still is some coma and astigmatism along the left and right edges which is not all that noticeable when looking at the full image without zooming. Note, however, that the final image above has been cropped. The lens produces some pretty significant flare on the brighter stars in the image owing to the ultra-red sensitivity of my UV/IR-modded camera.  I had to deal with extensively with these lens flares in post-processing by creating masks to select them and then suppressing color saturation. The lens flare is my one disappointment for an otherwise remarkable deal for a prime-focus lens. One benefit that I really like is that I can focus the lens using BYEOS which really made checking focus regularly during the night a snap.

Close-up of lens flare on Saturn, Antares and Dschubba early in non-linear processing, prior to flare reduction (clockwise from top-left).

My Vixen Polarie is probably my new favorite piece of gear. It was quick to polar align and I could not detect periodic error in 100 second exposures on this night. I have subsequently performed 240 second exposures with this same lens and crop-sensor camera at 30 degrees declination without evidence of periodic error. Nice! The batteries lasted over the 5 hours I operated the mount (ambient temp, 65deg F) with the light was blinking at the end, signaling low battery power. That is plenty of time for fair weather imaging sessions. I did not attempt any dithering for this inaugural imaging session with the Polarie, but as it turned out there was a slow drift in the frames from top to bottom, probably by 60 pixels or so over the 3.5 hour period which ultimately helped in image integration rejection algorithms. My hunch is that this is differential flexure since the drift is in the direction of gravity. I do use the ballhead recommended by Vixen for the Polarie, so perhaps I just need to tighten the clutch a bit more. Still need some investigation there. At some point I need to develop a dithering strategy for this mount.

In order to improve contrast in the stacked image due to moonlight during the first hour of exposure, I weighted the subframes by the inverse of the median ADU using David Ault’s SubframeSelector weighting spreadsheet. Weights ranged from 40-100% with the brightest image receiving the lowest weight. This improved contrast substantially compared to averaging with equal weight or noise evaluation.

Even though my data was acquired at a relatively dark location, I still had to battle with a light pollution gradient emanating from the lower-right corner. Choosing where to place background samples for DynamicBackgroundExtraction (DBE) proved to be difficult due to the colors caused by dust in regions that initially appear as “background”. In all cases, I did not realize the mistake until late in processing after non-linear stretching and color saturation. For instance, one time DBE subtracted too much near the Milky Way which practically zapped (reduced to nearly zero) the dust lanes in the lower left. Another time I realized twenty steps into processing that DBE caused a dark olive-green color cast to the background in the upper left whereas the color of the background in the upper right was neutral. It took a careful selection of very few sample points to achieve a background model that doesn’t cause these problems. Surely it is not perfect, but good for my standards at this point in time.

Color calibration turned out to be tricky. Initially, I only used the stars on the right-hand side of the image for a white reference, figuring that the stars in the direction of the Milky Way would be artificially reddened due to preferential extinction of short wavelengths by dust. My hunch did not work out so well because late in processing I realized there was a red color cast in the highlights that was difficult to wrangle out. So I started from scratch and used all the stars in the image as a white reference, curing the red color cast.

I really wanted the dust to be the focus of the image, so I spent a lot of time in post-processing trying various tricks I’ve learned over these past two years to bring out the dust. After processing this image five times over, I hit pay-dirt on the sixth try using Jerry Lodriguss’ screen-mask-invert (SMI) method which really made the dust pop. After reducing the background brightness, LocalHistogramEqualization and the DarkStructureEnhance script worked marvelously to increase contrast in the dark dust lanes extending from the Antares region. Contrast in the Milky Way dust lanes was increased by masking the image with the extracted green channel (which had the most contrast between dust and the rest of the Milky Way) and applying a standard “S” contrast curve with CurvesTransformation. Finally, I reduced the sizes of the bijjillion small stars a bit more than I usually do to further allow the dust features and brightest stars to stand out.

I am very happy with how this image turned out. It was worth the lost sleep and bug bites to capture this icon of summertime. Still, I am not through with this region by a long shot! I really want that 180mm focal length view of Rho Ophiuchi and also a mosaic of Scorpius in its entirety. This is one of those regions that will keep astrophotographers busy until the end of time.

Pre-Processing Workflow (PixInsight)

1. Calibrate with flats, darks, bias. Debayer, register.
2. Weight subframes by inverse of median ADU value since the moon was present during the first hour. Weights ranged from 40-100% with the subframe having the highest median value given 40% weight. Formula taken from David Aults weighting spreadsheet (SubframeSelector).
3. Integrate using weights (ImageIntegration, Windsorized Sigma Clipping rejection).

Processing Workflow (PixInsight)

1. Initial crop to remove low SNR stacking artifacts along edges (Dynamic crop).
2. Remove gradients (DynamicBackgroundExtraction, subtract).
3. Neutralize background (BackgroundNeutralization using preview in upper right).
4. Set white balance (ColorCalibration, use entire image as reference w/structure detection enabled).
5.  Set luminance coefficients to 0.333333 for RGB channels (RGBWorkingSpace).
6. Non-linear noise reduction (TGVDenoise with inverted luminance mask √† la David Ault’s recipe, reference below)
7. Repair overexposed star cores for brightest star
7a. Execute Repaired HSV Separation script
7b. Combine H, S and V images through mask selecting only the brightest star cores (ChannelCombination)
8. Non-linear stretch, lower midtones slider (HistogramTransformation)
9. Reduce color saturation of reddish/magenta lens flare on bright stars.
9a. Generate mask selecting lens flare by extracting X and R channels (ChannelExtraction) then multiplying the two together with PixelMath, CloneStamp to remove the rest and ATrousWaveletTransform to remove tiny stars (deselect first two wavelet layers), curves transformation to increase mask aggressiveness.
9b. Reduce color saturation of red/magenta (ColorSaturation through flare mask X 2)
10. Increase color saturation (CurvesTransformation to S channel with luminance mask selecting foreground).
11. Brighten dust and image in general with Jerry Lodriguss’ SMI technique [Kantelberg reference below]
11a. Extract luminance, clip shadows & highlights (HistogramTransformation)
11b. Duplicate image and blur using ATrousWaveletTransform, deselecting first layer of 5 layers
11c. Combine duplicate with original image through inverted luminance mask using PixelMath expression: ~(~$T*~blurredDuplicate)
12. Reduce background brightness (GammaStretch R/K = 1.15 with inverted luminance mask)
13.  Reduce color saturation of red/magenta lens flare (ColorSaturation through flare mask X 2)
14. Increase color saturation (CurvesTransformation to S channel through luminance mask)
15. Reduce red rims around small stars caused perhaps by lens refraction (?)
15a. Generate mask selecting small stars by subtracting R channel from G channel, ATrousWaveletTransform, deselecting residual detail to remove everything else.
15b. Reduce S channel with CurvesTransformation using small star mask.
16. Increase color saturation (CurvesTransformation to S channel through inverted  luminance mask)
17. Reduce color saturation of red/magenta lens flare (ColorSaturation through flare mask X 2)
18. Reduce green cast (SCNR to green, amount 0.88 with inverted luminance mask)
19. Enhance dark dust lanes (DarkStructureEnhance script)
20. Increase contrast (LocalHistogramEqualization, kernal radius 150, contrast 2.0 amount 0.6 12-bit resolution with inverted luminance mask)
21. Increase color saturation (ColorSaturation through inverted  luminance mask)
22. Reduce red rims around small stars (step 15 above X2)
23. Reduce purple lens flare around bright stars
23a. Create mask selecting purple lens flare with ColorMask, hue 300-350 degrees, CloneStamp out everything but larges lens flare.
23b. Reduce color saturation of purple lens flare (CurvesTransformation to S using mask above).
23c. Decrease brightness of purple lens flare since the last step made them whiter and brighter (CurvesTranformation to RGB/K using mask above). Repeat last two steps twice.
24. Balance background blackpoint using a small preview in upper right corner and adjusting blackpoints of R, G and B channels until median value of preview is the same.
25. Reduce sizes of small stars (MorphologicalTransformation, morphological selection, size 3, iterations 2, amount 0.55, selection 0.25; mask selecting small stars generated with RangeSelection and cloning out larger stars).
26. Increase contrast in dark lanes of Milky Way (“S” curve in CurvesTransformation to RGB/k using inverted extracted green channel as luminance mask)
27. Reduce chrominance noise (ACDNR to chrominance with built-in luminance mask).
28. Increase contrast in dark lanes of Milky Way (“S” curve in CurvesTransformation to RGB/k using inverted extracted green channel as luminance mask)
29. Sharpen (UnsharpMask, stdDev 2.0, amount 0.56 with luminance mask).
30. Final crop (DynamicCrop)


“M42 PixInsight Tutorial” by David Ault for linear noise reduction

“Exponential Transformations”, Rob Kantelberg


  1. Hi Jason, very nice image, i am still quite new to astrophotography and been meaning to capture the same target, i have the same gear 550D (secondhand, not modded), 50/1.8, Polarie, and BYEOS, unfortunately at this point I couldn't afford PixInsight, so i rely on DSS for now, I tried yesterday using f5.6 ISO1600 20x60sec, no calibration frames at this point, and i found it very hard to conclude whether there is something wrong with my camera sensor or exposing it for 60s will result with which i call it fried-sensor (more than just noise), so do you mind sharing one of your light raw to check whether this is normal? greetings from southern hemisphere, clear skies

    1. Thank you for the compliment, Wiama! Since taking this image I have had a lot more fun with the Polarie/50mm lens setup. I'm sure you too will enjoy it! Plus, this target is much better placed in the southern hemisphere compared to here where it was hugging the treeline. I'm not sure how dark your skies are, but maybe your subframes were underexposed? I took my image from a green zone on a light pollution map and the back-of-camera (BOC) histogram peak was around 1/3 from the left edge at f/4 with a 40 second longer exposure length. Do you know if your BOC histogram is about the same? Here is one of my subframes. Hope it helps! Best regards.