|
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.
|