Moonstroked

An all-night, single camera, high resolution, high dynamic range panorama of Luna's lowest arc

This image was created from almost 14,500 exposures on the night of June 24-25, 2021. The concept to capture the Moon at it its lowest above a cityscape was Luca Vanzella's. We co-planned the shoot in 2020 but had to wait for favourable weather to coincide with the one night a year the full Moon reaches its lowest declination. Luca aimed to create a time-scape composite with well-spaced Moons, while I went for a "smoosh" and unexpectedly received this "painting" from Mother Nature. The broad flanking dusky pinks come from a classic cloud water droplet halo called a corona, explained here: http://www.atoptics.co.uk/droplets/corona.htm

This is not a stationary camera and fisheye lens shooting a single exposure every few seconds, allowing the highlights to blow out, then "lightened" in Photoshop or GIMP, re-projected, similar to what you see immediately below, but you would be forgiven if at first glance you thought it might be.

With the Moonstroke image resized to fit your screen and the lack of lunar features, you'd miss that the final image is 13,778 pixels wide with the resolution of a 40mm lens, or that the Moon is properly exposed and highlights are conserved. The colours are pretty close to our visual experience - the rising Moon was pumpkin orange (not its June namesake Strawberry!) Enjoy this short time-lapse HDR video of the night as the tracking mount panned the camera. At 1080p, the video is still only 1/3 resolution of the pano, the Canon 60Da's vertical 3456 pixel count.

Close-up of the painting

At full resolution there is so much detail to take in! During the 10-second interval between exposure bursts, sharp cloud edges leave "bristle marks". The brush strokes are created by accumulating the light from the cloud one frame after another.

Close-up of an HDR frame

A single HDR still from the movie looked like this. You can clearly see detail from the shadows through the middle tones and up to the lunar Maria, turning white only as we just reach the design maximum of the lunar southern highlands.

How Moonstroked was made

High Dynamic Range (HDR). To capture the shadows and the super bright highlights, one sets the camera to shoot a burst, bracketed set of exposures, from quite short to quite long, and a few in between. MagicLantern lets me choose whether I go long to short, short to long, or start in the middle and alternate shorter/longer. I find alternating produces a better composite.

With the Canon 60Da set at ISO 800 and the 40mm "pancake" lens at f/6.3, I use MagicLantern firmware to extend the 3-exposure bracket to shoot a 6x2EV set: 1/15s, 1/60s, 1/4 Sec, 1/250s, 1.0s, 1/1000s. I just click and drag the images into the free EnfuseGUI Windows/Mac application by Ingemar Bergmark. Settings: Grayscale projection: lstar; Exp 1; Cont 0; Sat 0; Mu 0.45; Sigma 0.14. For each pixel, the algorithm takes an average of of the bracket set, but gives less weight to values smaller or larger than Mu. I have learned that even though the 6th exposure is short enough to not blowout the lunar highlands, EnfuseGUI needs an even shorter/darker image to render the Moon more reasonably. This 7th image I batch generate at home (I happen to use XnView). Keep saturation at 0 otherwise the surrounding background shifts unreliably one set to the next. I tweak these numbers slightly to see if I get something I prefer, using the quick preview function, then run it to check the full scale image. Next I remove these and drag a bracket set from bright twilight or post sunrise into the EnfuseGUI window to see which settings will work reasonably on both. Clear that file list then drag and drop in the entire folder of images. I've found that loading more than 6000 at a time seems to choke it. Make sure you adjust the bracket count to your number and choose JPG output. Tiff if you have lots of patience, diskspace, and horsepower... on my older laptop it takes about 25 seconds per set, so I start it and head off to bed. The result is quite good, but I would like to hear from you because I am still looking for a better HDR solution. Batch processing is an absolute must!

A paragraph about the colour: the camera was a Canon 60Da on daylight setting, which records deeper reds than the 60D, affecting the tones somewhat compared to non-astronomical sensors. Some smoke from the start of the 2021 horrendous forest fires in western Canada and the USA contributed. Luca thought the resulting colours were skewed a little oddly compared to his 60D shots, so with one of his midnight images I extracted RGB values of a white building side and made mine conform, applying this simplified "gray card" transform to the entire set of images, accepting that I'm not claiming rigorous scientific colour constancy. Some gamma was used to pull up the fainter features while leaving the highlights untouched, but no saturation nor contrast adjustments have been made. But you knew that because the city is not rendered like so many egregious night shots of Tokyo or Piccadilly Circus.

The vertical banding is not a direct artifact of the vertical slices because they are easily twice as wide. The sky itself is darker or lighter depending on where the clouds were, casting shadows on the atmosphere, like crepuscular rays.

Key camera settings. ISO 800?! JPG?!

What about noise and compression? Although newer camera models with better tech helps, the main limitation is that the Moon moves! Ok, the Earth. Anyway, a single 3.2sec exposure at 100mm and a cropped sensor shows slight trailing. Now add the following challenges: you need 5 more exposures, a fast card, and fast writing capability. Six exposures at 2 EV: 2s+1/2s+1/8s+1/30+1/125+1/500 = 2.7s then the gaps the camera needs between shots, the transfer to the writing routine, then the actual writing, before doing it all again. When I shoot one bracket set, I can use RAW with the buffer and let it catch up. In a nearly continuous shoot, the longer times to transfer RAW images quickly chokes the camera resulting in dropped frames. Even shooting JPG, going to ISO 400 doubles the time, and that means the Moon is not in the same place at the start and end of the bracket set, causing ghosting artifacts in the HDR process. My 60Da lets me run a 5 second interval (again thanks to MagicLantern firmware) for 6x2EV with longest exposure at 1.6s. But for Moonstroked I chose 10s intervals because the anticipated 42GB would fit on one 64GB SD card without me having to switch when I'm half-conscious at 3 am. Your equipment may allow 4 seconds - simply try it for 10 minutes and check that the camera's buffer number isn't running down on you.

f/6.3, why not f/2.5 and use a lower ISO? To be honest I forgot that this lens is pretty decent, but as a creature of habit, I shoot time-lapses with a 70-200mm which is not impressive at f/4, so all my settings have been for f/6.3. Now that I've written this down and seen the possible, next time I shall split the difference. But will I go for lower ISO or shorter exposure and shorter interval? Hmmm, need that 256G card.... going to f/1.4 gives me softer details.... so no.

As for noise at ISO 800, the HDR process naturally subdues some of it, but the lion's share is reduced during the compositing "smoosh" as some 20+ images get overlaid on each pixel.

Camera and tracker set up

My 60Da was positioned like Fig 13 from the Star Adventurer 2i manual, except the ball-head was canted up about 7 degrees. It's pretty crucial to level the SA and verify that the horizon does not tilt as you swing the camera through the planned arc. The mount , the camera (through a dummy attachment), and a dew heater ran on a large battery to preempt the classic long-night gremlins. The drive rate was set to lunar.

Lunar rate? But the drive is horizontal! And the Moon's path is a tilted circle. It rises at an angle, making its horizontal speed fall behind the SA, not quite matches it when near the meridian (due south), and again falls behind as it sets at an angle. But it's the closest setting. Knowing that the Moon would appear to drift to the left, I pointed the camera left of where it would rise, then during the night the camera would run ahead so that by moonset the camera was pointed a similar amount to the right. I used Bob Atkins' field of view calculator and a planetarium program to judge how much I should shift the camera at the start. Press the button and set the alarm for 5 am. The rest is a simple matter of programming <grin>.

Compositing a "smoosh"

A classic "lighten" composite. Because the Moon is brighter than the foreground when the Sun is below the horizon, you can take a single foreground image, before the Moon enters the frame or after it has set, and with properly (shorter) exposed images of the Moon, you can use GIMP or Photoshop "lighten" function with the subsequent Moon images to bring them in.

The challenge with an evening-to-morning sweep is that the sky background changes. I don't want the blues of the earlier time to bleed into the darks of the later time. I solve this by extracting a vertical slice (think picket of a picket-fence) centered on the Moon with a few pixels to spare. At 97 pixels wide, my slice is a mere 1.9% of the frame.

Here are two picket fence slices, 50 seconds, or 5 intervals apart. To smoosh them, I overlay one on top of the other, using "lighten" to pick the brightest pixel. One key is making sure the foreground on the second image overlays the foreground of the previous. With the camera sitting on the Star Adventurer tracker, I measured that the foreground is moving to the left at 6.42 pixels per 10 second interval. So shift every new slice by 6.42 pixels. It takes 15 intervals to move through each 98 pixel wide ground-relative slice. Done.

Except that the Moon is moving backward relative to the tracker's speed and drifts out of the uniformly moving slice. I could have extracted the azimuth of the Moon from JPL's Horizons ephemeris using the timestamp of the image to figure the relative shift in azimuth. However it seemed simpler just to measure the X-pixel value of the center of the Moon across a range of times/frames, then for each frame, interpolate the X-value of the center of the Moon/slice, and overlay that slice with lighten, shifted by the tracker's horizontal pixel speed.

Unless I'm mistaken, there is no commercial software to do this, so I used Windows Active Perl to do the calculations and issue the appropriate command-line calls to Imagemagick to slice the individual images and composite them into the final result. It turns out this is pretty simple from a physics (and coding) point of view, to combine two motion frames of reference against a stationary one. Practically however, it was very easy to get confused about left and right, and whether that should be subtracted or added. Once I got it straightened out, I let the program run overnight. In pseudo code:

With each image do {
interpolate the Moon's center X-pixel on the current image from the measured samples
extract a slice with a few pixels on each side of the Moon
figure out what the pixel value is of the left edge of the slice in the absolute (ground) frame
overlay the slice onto the absolute frame with lighten at the calculated spot
} #end loop

Cosmetic touch-ups

Of course I did some corrections. Firstly, the lens is not fee of internal reflections, so I had to remove several parades of "ghost stars" diagonally opposite the center from the brightest streetlights as the camera panned. it turned out that a slightly wider slice during processing filled in more background which I liked, but the slight non-linear distortion in the lens resulted in a softer foreground with buildings blurring by some 8 pixels or so. So I re-processed the series to get a sharper foreground which I then used to mask out the blur. Some of the cloud wave trains had such high contrast crests that after each 10 second interval they had moved and left a very strong fishbone structure - so I softened the most distracting ones with local clone-lighten pastes.

Location: the rooftop of the parkade of the Royal Alexandria hospital in Edmonton, Alberta, Canada.

Time-slice

I realized during the pre-shoot planning that a classic time-slice could be generated from the HDR stills. The beauty of the time-slice is that you can see the Moon and its Maria are properly exposed along with the foreground. Simply choose how many minutes apart each picket-fence slice should be and the software will figure out the width of the slice in pixels and how many seconds (or intervals) apart the slices need to be. Except that the camera is moving. Oh right, the Moon shifts to left against the motion of the camera... and not at a constant rate, so a fixed drift value will have the Moon slide out of the picket!

With a bit of thought, I realized I had to invert the logic:

With each slice in absolute foreground pixels, do {
calculate the absolute X-value of the center of the Moon's pixel

reverse-interpolate (by successive approximation) which image has the Moon's center at that X-pixel
extract
the desired width of slice
if one wants a gradient transition from one slice to the next ,
use a mask
append the (partially masked) slice onto the absolute frame
} #end loop

Seamless time-slice
A neat bonus of the short interval and the way I coded the time-slice, it is also possible to create a nearly seamless version with a smooth background, then after in GIMP drop the still images of the Moon on top. It looks a little weird, probably because of the patchiness of the cloud.

Next opportunities

The Moon traces its lowest arc in the sky when it is at its lowest Declination. Since we want this when the Moon is nearly full, it puts it closest to the summer solstice.

From Jean Meeus' Astronomical Tables of the Sun, Moon, and Planets (Third Edition) :
2022 Jun 14
2023 Jul 03
2024 Jun 22 *lowest FM of the decade
2025 Jun 11 *actual minimum Dec is -28 43' on March 22 2025.
2026 Jun 29
2027 Jun 19
2028 Jun 7 Jul 6
The retrogression of the nodes brings the series of low Full Moons back every 18.6 years.

Good luck with the weather everyone!