contents | techniques

Assembling Milky Way Panoramas

previous | first

In three seasons of taking wide angle pictures of the Milky Way and assembling them into mosaics, I have often felt that there must be a better way. The process is referred to as "stitching" in the the world of Quicktime VR and 3D surround effects, and various tools have been created to help multimedia authors assemble pictures into continuous strips for subsequent virtual reality presentation.

I investigated various software approaches to see if I could benefit from them and found that either the tools were too expensive to obtain for my personal hobby, or that they lacked the degree of precision, and capacity for high resolution that is needed.

I was quite impressed then, at the posting of a dramatic full 360-degree panorama of the Milky Way by Axel Mellinger, and even more excited when he shared his approach in a technical paper. I found that using his method solved one of the most difficult of the artifacts that I struggled with: the mismatch of stars at the seam between two adjacent photos in the mosaic.

In my first effort (Autumn), I did my best to line up the stars as they naturally fell in the photo. I found that if I joined images at the positions which were about equidistant from each picture center, the stellar mismatch was minimized, but still in excess of many pixels in some cases. I cut along areas of sky which had few prominent stars, then used a blend to make the textures seem continuous.

By the time I assembled Winter, I had devised a method to locally distort the edge of one picture so that the brighter, reference stars would land at the correct positions to overlap their locations in the previous picture. The warping used triangular subdivisions and resampled each region to stretch and squish the reference stars into position. The bright stars were now correct, but the errors in between were still excessive. I covered them up by cutting and blending as before.

Dr. Mellinger's method is more complicated, but the results are nearly perfect. Here are the steps I took in preparing Spring:

Acquire Photo-CD image frames

I use the Photoshop acquire command to do this. Each 35mm frame is 3072x2048 pixels.

Retouch dust and scratches

Photomanipulation level 1.

Adjust image histogram (levels).

Make basic corrections for exposure and contrast (level 2). The Photo-CD color data is dependent on the scanner operator, especially for astrophotos. They are however, uniformly sharp, high resolution, and artifact-free.

Anti-vignette compensation

All lenses falloff toward the corners, and wide angle lenses are particularly susceptible. I haven't found a "universal" way to compensate for it (level 5). It seems to be less uniform and symmetric than lens vignette theory would predict. It doesn't need to be perfect, since subsequent color adjustment will be applied in a later step. I save the image with some white space around it as working area for later.

Identify reference stars, obtain their galactic coordinates

I make and then annotate negative proof prints, locate about 15-20 reference stars near the edges and where images will overlap. I enter their celestial coordinates (found from the star mapping application Starry Night ) and pixel coordinates into an Excel spreadsheet which then calculates their galactic locations. This is a bit tedious, but necessary.

Calculate camera parameters and higher order warping coefficients.

The camera parameters are its focal length, centering, and orientation to the galactic axis, etc. These are used for making a Mercator projection of the image into galactic coordinates (see Axel Mellinger's paper). I created a Mathematica notebook to calculate these parameters based on the reference star positions. It also calculates the coefficients for the (mild) polynomial warping that places the reference stars to within a pixel or two of true.

Transform the image geometry according to the parameters found above.

I think this is photomanipulation level 6.

There are no accessible commercial tools to do this (to my knowledge), so I adapted some image processing routines I have built over the years into a crude pixel remapping program. I used the Photoshop "raw raster" formats as a means in and out of it. The result is a rotated, ballooned image, but with every star at its correct coordinate. Now you see the need for some white surround working area.

Read into Photoshop as separate layers. Create visibility masks.

This is where the work pays off! Each image (there were 5 in Spring Milky Way) is in galactic coordinates. Their centerlines are equivalent, just adjust horizontally until the stars line up. And they do!

Color adjust each layer to hide the center of the seam.

Start with one layer (the center frame usually shows the best color encoding) and then adjust the other layers to match. Make layer color adjustments until the seam as it crosses the centerline becomes invisible. The seam may become visible at the edges, but that will be addressed next.

These are semi-global (entire layer) color adjustments, photomanipulation level 3.

Localized color adjustments, each layer, to hide remainder of seam.

This takes some practice and judgement. Select a region of a layer, make a small color adjustment, select a smaller region, make another small adjustment, continue until the seam edge is invisible with the next layer.

This remains the most demanding and time consuming part of the process. I found that no "feathering" across layers is needed if this is done correctly.

Flatten the layers, make any other localized color adjustments.

Sometimes, flare and light pollution hot spots can be attennuated with careful and minor adjustments to portions of the composite image (photomanipulation level 5).

Final image cropping

I sometimes apply a light image warp in order to fit a target aspect ratio. I wanted to maintain a 3:1 aspect for Spring. This is obviously for purely aesthetic reasons. I did this on the previous mosaics with more severe distortion, but the projection to galactic coordinates resulted in less wandering of the Milky Way across the sky.

The result of the crop yields a final image size of 1700x5100 pixels, a little smaller than the original span of PhotoCD pixels, due to the geometric transform.

Edge finishing

Below the horizon, I will paint in its dark textures in order to fill to the frame edge. I could just backfill with black, but in a quality enlargement, this will be noticable and distracting. By virtue of this action, I commit a Level 10 photomanipulation!

Links to other Milky Way Panoramas.

 

 

 

Copyright 1999-Jun-24

Thor Olson