Many programs assume that the horizon is roughly in the middle of each input picture. In reality, this is seldom the case: For a cityscape, the camera is usually tilted up, while for the Grand Canyon, it is tilted downwards.
Another frequent assumption is that the input pictures were taken with a rectilinear lens. This is fine for the majority of pictures taken with ordinary cameras, but it doesn't allow for images from fisheye lenses, which have their own geometry.
The output of many programs is limited to cylindrical panoramas. These panoramas are well suited for printing, but do not cover the area far above or far below the horizon. Spherical panoramas, on the other hand, do include the zenith (sky) and nadir (ground) of the scene. Only few programs can create these panoramas.
The panoramas on this site were made with PanoTools from Helmut Dersch, which is probably the most universal panorama software. It is also free. The program suite consists of a graphical interface, PTPicker, and helper programs for the computation of the panorama. There are also Photoshop plug-ins, but it is easier to use PTPicker. Since PTPicker is a Java program, you also need the runtime environment (JRE), if you don't already have it. I got JRE 1.3 from www.javasoft.com.
Before you begin, you should set the memory assignment for the Java Virtual Machine to a large value (basically all your physical memory), because the default of 16 MB is too small for many images.In Windows, open the registry and open the entry for 'Executable Jar File'. The action->open entry should read
C:\Programs\JavaSoft\JRE\1.3\bin\javaw.exe -jarwith possibly a somewhat different path. Insert the option '-Xmx number of Megabytes m' to change the amount of memory. For instance, to increase Java memory to 128 MB, change the command in the registry to
C:\Programs\JavaSoft\JRE\1.3\bin\javaw.exe -Xmx128m -jarIf you still find operation to be very slow and there is a lot of hard disk activity going on, then you'll have to buy more memory (or work with smaller pictures). Prices have come down recently and since you will handle large images, a memory upgrade will make the work more enjoyable.
I start by copying the input images into the Panorama Tools directory. Fisheye images should be cropped to a rectangle that is just big enough to contain the image circle. Create a new script by either using the menu 'File > New' or by copying an example script.
Edit the script. At this point, you should have read the documentation that comes with Panorama Tools. As a quick reminder, y is the yaw angle, measured along the horizon. For three pictures, you aim for 0, 120, and -120 degrees. v is the vertical field of view and 190 degrees is about right for fisheye images taken by Nikon digital cameras. The parameters a, b, and c describe the barrel distortion of the lens. Although they are the same for all images taken with a particular lens, it is best to optimize them for each panorama. In the other lines, parameters =0 mean 'use the value in line 0'. The program optimizes all parameters that are listed in the v lines of the script.
Save the script and start PTPicker. Load the script and load the first image as 'Left Image', the second one as 'Right Image'. Maximize the application to full screen and scroll to find the overlap region of the two images. Find a feature in the first window and click on it. Click on the corresponding feature in the other window. Repeat for at least 3 features, better 5-8. Don't use features that are too close to the point where the panorama was taken, because parallax between the two images can cause errors. Features on the horizon are best.
Save the script and load the third image. Find the corresponding features and repeat for the second and third image. Now use 'Project > Optimizer' to start the computation. The average error should be less than 5 pixel for a 3000 pixel output image. Use 'Project > View Script' to view the result of the optimization. If a point has an error much larger than the other points, use 'Edit > Find' to display the point. Check if the feature really corresponds to the one in the other window. Repetitive structures such as windows on buildings can trick the eye. Move bad control points, replace them with nearby ones, or delete them. Rerun the optimizer.
When the error is small enough (or when you want to see the effect of a big error) use 'Project > Stitcher' to create the panorama. Depending on image size and memory, this can take a while. Load the result into a graphics viewer or into PTViewer and check for problem areas. Distant problem areas can be improved by adding more registration points, but nearby problem areas are due to images not being taken at the same point or the camera not being rotated around the nodal point. These areas have to be hand-corrected in a paint program.
I have found Philo's tutorial very helpful. For questions, there is ptfaq.org.