2D to 3D Conversion

The hard way - doing it by hand

Let us assume that we want to create a variant of the 2to3 logo. We start out with the left-hand picture:

We want to make a stereoscopic picture from this one that has the digits standing out in front of the window, so we load it into our favorite image manipulation program, put the digits in a separate layer, and shift them off to the left, obtaining something like this:

Now, we combine both pictures into a crossview image suitable for freeviewing, putting the newly created right picture on the left side, and the original left picture on the right:

This image can be viewed by crossing one's eyes until both pictures merge.
Alternatively, one can create an anaglyph image by separating the RGB color channels of both images and combining the red channel from the left image with blue and green from the right:

This method works quite well for simple cases like this one, but for realistic images it tends to get tedious - one has to use a larger number of layers, shift them off by different amounts, fill the gaps that are created by shifting, and do all this over again if the result is not right (for example, if the stereo effect is too weak or too exaggerated).

There is a simpler idea available, though:

Using a depthmap

The idea here is to create another grayscale picture the same size as the original image that encodes depth by intensity - regions in the original image that should be farther away are painted darker, those that are closer to the viewer are painted in a lighter shade of gray. Of course, one needs a special utility to convert this pair of pictures to the appropriate stereo views. There are programs like Bas-Relief available for this purpose, but they suffer the drawbacks that they run under Windows only (although at least the demo version of Bas-Relief can be used under wine), that there are no open-source solutions, and that they are somewhat expensive for what they actually do. Thus, this project aims at creating an open-source, multi-platform utility for this purpose.

Coming back to our example, the pictures shown above have all been created from these pictures:

using the command
2to3 -d 0 -o 20 -tpng 23a.png 23ad.png
2to3 is mainly a command line utility; it can read images in the JPEG, PNG, BMP (only uncompressed 8 and 24 bit), and PPM/PGM/PBM formats, and do some tweaking of the depth map, too. For shellenged Windows users, there is also a simple GUI version (which will run under Linux/wine, too, if anybody wants to do that). You can get it from
Sourceforge project page