A library by David Bouchard for the programming environment Processing. Last update, 09/17/2013.

Keystone is a video projection mapping library for Processing. Currently, it allows you to warp your Processing sketches onto any flat surface by using corner pin keystoning, regardless of your projector's position and orientation. The goal is to eventually expand this library to enable more advanced projection mapping, such as projecting on 3D models or curved surfaces and edge blending of multiple projector screens. 

Thank you to the following contributors for features added to Keystone:
- fixed the XML load/save once more (Machiel Veltkamp)
- improved perspective calculation using JAI (Eduardo Moriana)
- fixed the XML load/save functionality (Andres Colubri)
- added manual control for the surface's corners (Daniel Wiedemann)



Download keystone version 005 (5) in .zip format.
For older versions of Processing (1.5.1 and lower), the previous version is available here. Note that this version is no longer maintained.


Unzip and put the extracted keystone folder into the libraries folder of your processing sketches. Reference and examples are included in the keystone folder.

If you are running this on Windows or Linux, you will need to also install the Java Advanced Imaging library for your platform.

Keywords projection mapping, corner pin keystoning

Reference. Have a look at the javadoc reference here. a copy of the reference is included in the .zip as well.

Source. The source code of keystone is available at Sourceforge, and its repository can be browsed here.


Find a list of examples in the current distribution of keystone, or have a look at them by following the links below.


Platform osx
Processing 2.0.3
Dependencies Java Advanced Imaging