The Power User's Panoramic Control Points Picker


PanoPoints is no longer actively maintained. I recommend trying Hugin, a free software front end to the Panorama Tools library. It runs on Linux, OSX, and Windows, and is a much more feature rich interface to the panorama tools.


PanoPoints is a free graphical front-end to the control point selection process necessary to create panoramic images using Panorama Tools, Helmut Dersch's excellent (but difficult to use) free panorama stitching package. PanoPoints is a Perl program, and runs anywhere Perl and Gtk are available, including under Linux!

Similar in purpose to Professor Dersch's free Java-based PTPicker, the free (but Windows-only) program ControlPoints, and to the control point selection interfaces in various non-free programs based on PanoTools, PanoPoints simplifies the time-consuming process of selecting matching control points in a set of panoramic images (or any image pairs, e.g., for morphing). It reads and writes the "control scripts" which PanoTools uses, but leaves running the PanoTools optimizer and stitcher up to you.


PanoPoints offers many time-saving and power-user features in addition to the standard point placement and script reading/writing offered by the other tools:
  • Nearly all operations can be keyboard driven, for fast marker placement, addition, deletion etc.
  • Toggle-able 2x zoom-on-pointer feature for precision placement.
  • Normal, vertical and horizontal points.
  • Point markers can be picked up and moved once set, with the mouse or keyboard.
  • Cooperates well with other tools which edit the control script (including hand-editing): does not alter any of the contents of the control script other than the control point definition "c-lines", and can re-read the script from disk at any time.
  • Makes it easy to work with large images:
    • Small toolbar which can be hidden to maximize working area.
    • Scroll by click-and-dragging image.
    • Auto-scroll while re-positioning point markers near the window's edge.
    • Full-image scroll-panners ala the Gimp and GThumb.
    • Image pairs are scrolled to show their first included control point when loaded.
    • Fast navigation among existing control points in an image pair, using TAB to cycle through or numeric keys to jump to a particular point.
  • Fast cycling through connected image pairs in the project, but only two images are kept in memory at once.
  • Intelligent "nearly correct" control point placement: once you've set one or more pairs of control points, new points will be placed on the other image using the average offset between the existing points (if possible). This usually gets you quite close, requiring much less time to offset to the matching feature.
  • Runs natively under Linux, and any other platforms which support perl and GTK.


Get it, along with news and more, on Sourceforge.


A description of the simple installation process can be found in the included INSTALL file.


Using PanoPoints is easy. Just run it, with or without an existing control script as argument:
host% panopoints myscript.txt

If you have passed a script, the first (alphabetically) pair of files is loaded, and the first matching control point (if any) for this pair is scrolled into view.

There are multiple ways to load new images to work on:

  • Double-click on a side to browse for image to load there.
  • Right-click on a side to see a list of project images PanoPoints knows about, for selection.
  • Use the left and right arrow tools on the toolbar, or keys < (or ,) and > (or .) to cycle through the paired images with matching control points.
  • Load a different control script (or revert to the existing one on disk) using the open and revert tools on the toolbar, or Control-o to open. You'll be prompted to save any unsaved changes if necessary.
The left and right image can be swapped using the swap tool on the toolbar, or by pressing x. At any time you can save the script, save it as another file, or revert to the script on disk using the toolbar or key shortcuts.

Panning around your images is accomplished with the scrollbars, by clicking on the image (not on a point) and dragging, or by using the full-image panner popup accessible on the crossed-arrow icon at lower-right where the scrollbars abut. To operate the popup, click and hold. You'll see a thumbnail of the full image with an outline which represents the portion of the image being displayed. Move to the desired location and release.

Creating new control points is done with the plus tool on the toolbar, or, even better, by positioning the mouse pointer and pressing p. Note that a matching point is made in the other window, either at the center of the window, if no other control points are set, or at an offset determined by averaging all existing point offsets. To ensure both markers of the pair are visible, press g.

One marker pair is active at a time; it is outlined in red. You can cycle through existing markers using TAB (forward) or Shift-TAB (backwards). The images will be scrolled to the matching markers if not visible, and the marker will be made active. You can jump to any specific numbered marker by typing its number (1-9). A marker can also be activated by clicking it.

You can move a marker by click and dragging it. When dragging near the image boundary, the image will be scrolled automatically. The active marker (outlined in red) can be positioned using the keyboard: the arrow keys move it by one pixel, with Shift, it moves 5 pixels.

Quick Reference

A complete list of the toolbar and key commands:

Control-o or Toolbar->Open Open a new script file.
Control-s or Toolbar->Save Save the script file.
Control-t Toggle visiblity of the control bar.
Control-q Quit panopoints.
d or Delete or Toolbar->Delete Delete the active marker.
g Show both markers of active pair if not visible.
p,h,v or Toolbar->Add Add new point (plain, horizontal, or vertical) marker at mouse position.
x or Toolbar->Swap Swap the left and right images.
s Load the pointed-to image into both sides.
SPACE or z or Toolbar->Zoom Toggle zooming.
1 -- 9 Activate and display the numbered marker.
< or , or Toolbar->Left Cycle back through matched images.
> or . or Toolbar->Right Cycle forward through matched images.
TAB Cycle forward through marker pairs.
Shift-TAB Cycle backward through marker pairs.
Arrow keys Move the active marker one pixel.
Shift-Arrow keys Move the active marker 5 pixels.
Toolbar->Save-As Save the script as an alternate file.
Toolbar->Revert Re-read the script from disk.

Send questions to:
Last modified: Thu Nov 13 00:30:28 MST 2003