This page presents a free script created in 2004 by Alexandre Jenny, founder of Kolor company. It is meant to be used in the framework of the Panotools project. Alexandre and his team then created a range of image-stitching software and virtual tour software that you can now discover on Kolor website.




Alexandre Jenny


From the same author :

Autopano Pro



















Automatic Panorama Recognising Tool for Panotools


What does this software do ?

It takes a folder and searches it for image files. By analysing the pictures, it attempts to divide them into panorama sets. The output will be the Panotools projects for actually stitching them.

In short : it finds panoramas in the supplied pictures, creates the panorama project files for them and adds sets of control points ! Easy, for lazy people.

Use it standalone : Step by Step

Here are 16 pictures straight from my digital camera ( ).

Just unzip theses pictures in a folder and put autopano in it also. Launch autopano with /project:ptgui switch for example.
It detected 2 panoramas, so autopano created 2 new files in the folder : panorama0.pts and panorama1.pts.

Let's open the panoram0.pts with PtGui.
- Go to "lens settings" Tab, hit EXIF to retrieve fov parameter of the pictures.
- Go to "Images Parameters" Tab, and set all rolls to -90 (it turns the pictures). You could skip this but actually optimization doesn't like long panorama over poles.
- Go to "Optimizer" Tab, switch to simple interface, don't optimize fov nor lens distortion. You should except an average error of 1.5.
- Using Panorama Editor (Ctrl+E), replace the panorama in the center with a well located horizon.
- Reoptimize with medium lens distortion correction enabled : average error is around 0.5. You're done !

Proceeding the same way with panorama1.pts gives you this panorama.

Of course, there are 3 pictures which were not used as they didn't belong to any of the panoramas.

Some benchmarking. It tooks around 137 seconds for the whole process on a Athlon 1,33 Ghz with no false control points.

Tutorials for using it as a plugin : PtGui, PtAssembler or Hugin

Use Autopano with PtGui

Use Autopano with PtAssembler

Use it with Hugin :

Command line Options

| AUTOPANO : Automatic Panorama Recognising Tool for Panotools                 |
|  version 1.03, 21 July 2004                                                  |
|                                                   |
|  Author : Alexandre Jenny                                                    |
Usage :                                                                        
autopano.exe [folder] [options]
autopano.exe /f file1 file2 .. [fileN] [options]
Launch the autopano analysis on the files provided or for the files which are
in the folder path provided (if no path, it use the current path).
The output of autopano will be one or several files named panorama1.oto,
panorama2.oto, ... panoraman.oto. In these files is stored the definition
of detected panoramas. PtGui, PtAssembler and Hugin can open such files.
The .oto files are located in the same folder as pictures.

/size:value (default:1024)
Gives the maximum picture width at which we should start analysis.
preceeding picture with greater widths will be ignored. At every step
picture are reduce by a factor 2. It reduces greatly the number of keys
detected but speed up the detection
/sift:value (default:0)
0: Lowe's standard SIFT algorithm
1: PCA-SIFT algorithm ( planned but not available yet)
When set, it outputs a jpeg file with the keys displayed inside to show
where keys are detected in a picture

/keys:value (default:10)
How many keys should remains in the project file for a pair of pictures.
This value is just an indicator : the current algorithm offen gives much
than this value
/search:value (default:2)
For keypoint pair search, use the following algorithms :
0 : brute force distance calculation in o(n.(n-1)/2), really slow
1 : global kd-tree BBF search
2 : global kd-tree Exact search
3 : kt-tree BBF search for every pair of picture (no global kd-tree)
/bbfemax:number (default:25)
Best-Bin-First emax value

/validation:number (default:4)
0 : No check at all, just outputs pairs
1 : Ransac
2 : Ransac, Statistical Check
3 : Ransac, Statistical Check, ISO repartition
4 : Ransac, Statistical Check, ISO repartition, Geometrical Test
/ransac_iter:number (default:2000)
Number of iteration for the ransac algorithm
/ransac_dist:double (default:10.0)
Maximal error for ransac algorithm
/geotest:number (default:10)
Number of point to be removed by geometrical test

/path:string (default: current picture's folder)
Specify project files folder
/name:string (default: 'panorama')
Specify project files name : will be panorama0, panorama1, etc
Force every picture to be in only one project file
/project:string (default:oto)
oto : Creates oto project files : it's now the standard file format
produced for integration with Hugin, PtAssembler and PtGUI.
hugin : creates Hugin project files
pta : creates PtAssembler project files
ptgui : creates PtGui project files

/help, /?, /h
This screen
Outputs detailed timing

Algorithms, Papers and Implementation ...

"Distinctive image features from scale-invariant keypoints" by David Lowe

Detailed description of the SIFT algorithm and how to efficiently implement it. Additionally there are empirical results to the parameters one should use.

"Recognising panoramas" by Matthew Brown and David Lowe

A more compact description how to use the SIFT feature detection algorithm as a base to build an efficient automatic panorama generation software on. It explains all the post-matching steps, such as Ransac check and also a pointer to the Best-Bin-First algorithm, an efficient probabilistic modification of the kd-tree algorithm (I also use BBF). See Matthew's panorama project page for some examples created with his original implementation.

The software was created in C++ using vigra library.

License ?

Here is the story. Most part of the software is available for free but not the SIFT detector. So I have to put a warning.

This software is provided for non-commercial use only. The University of British Columbia has applied for a patent on the SIFT algorithm in the United States. Commercial applications of this software may require a license from the University of British Columbia.


Planned future version :

I already have an integrated optimizer for calculating of the location of pictures (yaw, pitch, roll, fov). But it's a little bit buggy yet, so it's not activated. But in a near future, it will pre-locate pictures without using the Panotools optimizer. As it does only the yaw, pitch, roll and fov, the PTOptimizer could be of some use for perfect match by optimizing lens distortion also.

WARNING : bugs for v1.03
- Some 16 bits TIFF files couldn't be read by autopano, so use standard 8 bits pictures.
- When providing file names using /f switch, you must use /path:'c:/youpath' also.

v1.03 : Brand new version with massive improvements

- SIFT debugging : it's now fully rotation and scale invariant,
- Improved distingtiveness,
- Fixes in Ransac algorithm,
- many new command line parameters,
- new interface beetween Autopano and GUI (PtGui, PtAssembler and hugin).

v1.02 : Bugs fix, better spaced keypoints, enhanced ransac

- Enhanced keypoint pruning system to ensure that the keypoints are spacially located in all overlapping area,
- Fixes in Ransac algorithm (some good matching pairs were removed with a ni = 1),
- Fix a bug in the image file search pattern : tiff and png weren't detected,
- New command line parameter for ransac configuration ( /ransac:number ).

v1.01 : Bugs fix release with improved detection accuracy

- Ransac algorithm bug corrected, every picture pair are now good,
- Updated kd-tree BBF search,
- Fix dependencies issue : you didn't need any dlls,
- Enhanced information output.

v1.00 : Initial release of AutoPano

Download Area

Zip file for Windows binaries :

last version :

previous version :

Gz file for Linux Binaries :

Not last version yet : autopano_1_02b_linux_binary.tar.gz (thanks to pablo for creating it)

Zip file for sample pictures :


To Sebastian Nowozin. He did also an implementation of the sift detector in C#.

To Pablo d'Angelo : creator of the Hugin GUI. He did a wonderfull work on this tool :

Feedback is welcome !

If you detect some crash using a given set of pictures, of course I'm interested in feedback.