Christian Bauer; 10/2001

Create a panorama with Panotools

So... .you want to know how you can create a panorama from three images taken with an fisheye?

First let me point you to a problem:
A company have a professional Camera/Softwaresystem which creates spherical panoramas also from fisheyeimages. This company have a very offensive habit against companies or softwaredeveloper which sells or give away software for free which are able to do the same without pay for a professional camerasystem based on a per image license ...they try to sue them because of a patent they have in the states!
It was not possible for me to find a description of this patent on their webpage to know if i'm on their list if i USE panotools, so i will not give you the name or link of this company ,but only the information thet there IS an issue. ..well... free market. :( .......
infos / International Quicktime VR Association statement


well... let's start with the tutorial and forget about that e-comerce crap!

This tutorial guides you through the steps to create a spherical Panorama from three images, taken with an fisheye lens and a seperation of 120° would also work with only two images (180°) but.. eh .. i'm the quick and dirty guy who haven't time to photograph very exactly! i need always three images to get good results ....ich bin extrem schlampig!

So we have three images which can be downloaded here. it also includes the scriptfile we will create in this tutorial.
We also need Sun JAVA 1.3 and the Panotools from Helmut install read the instructions of the products.

What we mainly need is the PTpicker. It's a java applet which works on Linux, MAC and Windows (it's java not .net!)

To start the applet i have a batchfile which expands the memorylimit from 32mb (which is not enough if you have three RGB images at a size of 1024x1024) to 192mb (which you *should* have)

run.bat = " java -Xmx192m -jar ptpicker.jar"


Let's start and fire up that little jewel and create a new Panorama (->File/new)create a new project

There is everything clear ...we want to output to a photoshop file, we have a fisheye projection, the focal lens is 7.7 mm (depends on your fisheye) and we have three images!

There is a menu called Left Image and a menu called Right Image.. we need that menus to load images to the left or right window and set controllpoints, but first we have to load the images don't care where the image will be shown, we can change that
(-> right image/image0)
first image loaded 2nd image loaded 3rd image loaded


I usualy start with image one on the left windows and image two on the right windows. I then click into one image to set a controlpoint and drag it on the other images to the correct position. You also can see that i use only few points which are in a mainly vertical pattern....this is because of the way panottols expect controlpoints to optimize!

Colors of the points:
RED- active controlpoint
GREEN- controlpoint which is on both shown images
BLUE- controlpoint which have it's equal on a image which is not shown

Then i change the right imgage to image 3 and insert again controlpoints.add another controllpoints

..and the last step will be chaging the left image to image 2 and insert the last controllpoints


We now have controlpoints on every image :

1:2 -> 1:3 -> 2:3


And now we have to optimize the controlpoints..we first run optimizer (-> Project/optimizer).

Now the panoramatools correct the orientation of the images to fit to the controlpoints, but normaly you have some points to correct. for this reason we can look at the script (-> project / view script)

this is the text file which will be generated by optimizer:

scroll down a little bit to find the lines where optimizer gives you the Distance between expected and real position of the controlpoints....
This is the result from the optimizer

Well, hmm.. biggest difference of 6 px .... hmm...this would be ok for me.... *g*



..maybe not for you! ....normaly you should try to get a difference of less than 2-3px and so you have to optimize the panorama a little bit.


first you have to find the points (, there is no way to show the pointnumbers on the gui)

find the controllpoint

A box pops up and ask you for the pointnumber. Now PTSticher will find the point for you , opens the images where the points are and lighten the controlpoints RED. This is the point you have to move around and try to enhance the preceision. It's possible that this point can't be optimized because of it's extreme position ( next to the imageborder or a very high tilt value)

In some cases you only have to delete the controlpoint and get a better result.

Anyway if you have changed something you have to run optimizer again and have again a look at the script.


If everything works well you can run the stitcher (-> project/stitcher )

This will output an photoshopfile with three masked layers:
photoshop layers

this is the result

You can see some errors on the sky and on the floor. ...well as i told you ..Phaa! ..difference of 6px is no problem to me... i just paint the errors away! ;)

activate the airbrush and paint on the masks of L03 the left areas in the sky away then on L02 the right areas... wasn't that difficult..we only corrected the missing controlpoints in the sky.

Now the floor.... time to clone! ..i always create a layer and clone the areas to this layer and also create a gradient where the tripod paint the floor on the panorama

If you want to have a really perfect panorama, which have a correct floor and sky you also have to photograph this images.


well ..have a closer look at the image and look if it's ok ...
this can happens when you don't work exactlyhmm ..time to say sh** !!!!

..go back to PTstitcher and add some controlpoints.... did i said it?**!


that's it...

..oh ..i got some mails about a little problem .. when you have problems opening/running the scriptfile by stitcher , then try to save the files with the .txt extension

any comment : email


sitemap | about | contact | contribute |

// Projects: Lightbox / Renderchallenge [Sibenik |Sponza | Postsparkasse | Blochi's scene ] / virtual vienna
// Tutorials: From a Fisheye to a hdr skydome 2 / sythesising Hdrimages / Viz4 selfilluminated objects / tweaking Lightscape / creating Panoramas / creating hdr-enviroments /remove a photographer from a mirrorball / how to use mkhdr
// Goodies:
MxS:DoFToy / MxS:Fassadeblinds / MxS:lightgen importer / eScape for lightscape / MxS:Panotour builder / weekly Hdr / Hdri-library / 3dmodels*
// Siteinfo:
sitemap / about / How to contribute / Friends on the web / contact/

(c) / interpolation 2000-2003