Saturday, 2 August 2008

Spherical Images

I went out a shot a new sequence of images that take me closer to having a full spherical image. For these images, I am using a Canon EOS 300D with a EFS 18-55mm lens. Not exactly top quality gear but it does the job for these experiments. I am still using trial versions of the software to build the views. What I will describe here is the process that I went through in order to capture the image, stitch it and prepare it for display.

Taking the photos

The first step is taking a sequence of photos. I still didn't have any accurate idea of the field of view both horizontal or vertical for my lens but I knew that 16 images had a high degree of overlap on the horizontal rotation so I experimented a little when I first arrived at my location (Days Bay wharf, Lower Hutt, New Zealand) and determined that I could get away with 12 images or 30° of rotation between images. Experiments on the vertical plane suggested about 60° of rotation would give me some overlap so I set the tripod and camera up so I could take two sequences of photos. The first sequence I took at 15° below the horizontal and the top sequence at 45° above the horizontal (the software tells me it was closer to 43°). Reading the degrees off the head wasn't all that accurate.

Once I had worked out these angles, I waited in the hope of getting a nice sun set but it was becoming obvious that this wasn't going to happen so I took the bottom layer and then adjusted the pitch and took the top layer. Twenty four photos all with manual focus, aperture (f 5.6) and shutter speed (1/50 sec). The focal length was 18mm.

With the temperature dropping and obviously no red sky sunset on the horizon, I packed up the gear and set out for home.


I downloaded the images into LightRoom and attempted an initial stitch with PTGui. On this attempt, I endeavoured to allow the software to find control points (matching points on overlap between the images) for stitching. Although it found control points for many of the lower pairs of images, it found no control points between the lower images and the upper images or between the upper circle of images. A revert to manually identifying control points enabled a first attempted stitch but it wasn't anything like expected. Hugin proved to be no better; if anything, it was worse at identifying control points. A different strategy was needed. I stitched the lower circle of images simply so I had something to show for my labours.

It seemed to me that if I knew the pitch (vertical) and yaw (horizontal) angles for each image that I should be able to tell the programs and have it stitch the images using these angles. In reading PTGui's help related to entering these coordinates, I learned that there is a Panorama Editor that would allow me to drag and drop each image into position. This revealed that my angles didn't match what I thought when I took the photos but it did allow me to line up the images with some degree of accuracy. It would have been easier if I could have zoomed in on particular parts of the image but this doesn't seem to be supported. Still an stitched image 360° panorama was created and didn't look too bad.

Hugin allowed me to enter the yaw and pitch for each image but doesn't have the Panorama Editor to make minor adjustments to positions. A panorama preview allows you to check the output and seems to do some other things but it didn't seem to allow for the repositioning of individual images or to zoom in to check details of the overlap. Not as helpful as I would like but at least it also stitched an image. The lack of documentation makes learning the Hugin features difficult.

I am still not satisfied with the stitched image. Some of it comes back to the angles I chose when I took the images but some are problems in lining up for stitching. I did try Canon's PhotoStitch and although it allows for the positioning of images in two rows, it really didn't allow for the curve that you get when taking close to 120° of vertical angle from top to bottom of the image. It also needs to be able to identify the overlap before you can adjust the blend lines. It looks like its days of use are coming to an end.

Creating viewer images

The file created from the stitch process is an equirectangular image. Basically a flat panorama that can be viewed in a 360° viewer like Canon's Panorama Viewer. To make it viewable as a spherical image, it needs to be converted to a different format. There are a number of options here but one is into six images that form the sides, top and bottom of a cube. To do this, I am using a trial version of Pano2VR. This crashed when I tried to drop the image onto its window but opened up the image if I started it by by selecting the image and asking for the image to be opened in the program. It would create the view images for Quicktime or Flash but wouldn't allow me to adjust some of the parameters for the image. This might be a problem caused by my stitching process and the fact that my image isn't a true 360° by 180° image. Still I had an image that I could review.

If you click the image, you will see the completed image as a 360° image in Quicktime.

Calculating requirements for taking the images

Having worked out what I needed to do to get a 360° by 180° image, it was time to think about how I ensured that I captured the right set of photos. I can't afford to buy a fisheye lens that would allow me to take about four images to achieve the desired result so I needed to calculate the number of images required. The key to doing this is knowing the field of view for the focal length of the lens when attached to your camera. This turns out to be fairly easy to calculate if you know the size of the sensor and the focal length. There are also calculators on the web that will give you this if you know the focal length and the focal length adjustment for your camera. The focal length adjustment simply recognises that for most digital cameras the sensor is actually smaller than the image that you would get from a 35mm film camera. For my Canon EOS 300D that multiplier is 1.6 for the 35mm equivalent focal length and the sensor is 22.7mm by 15.1mm. Building a spreadsheet to perform the appropriate calculations proved reasonable easy. The result is that at 18mm focal length, I need to take 10 images in the horizontal plane and 4 layers to capture the vertical. It is probably best to look at taking one image at +90° (straight up) and layers at +45°, 0°, and -45°. A -90° image could also be taken to complete the sphere but isn't essential. There is a small hole in the bottom of the image that can be plugged with a logo or some other suitable filler. A total of 31 images will be required. Unfortunately the weather here isn't helping for doing another experiment.

No comments: