3D sphere from photos

I just presented my demo at the end of last week so now I have some more time to write about it. As I was saying, the purpose was building a multi-touch interface using infrared lights. I also needed to have something to demonstrate on. After thinking about and talking to my coordinator, Frank, the decision was to implement some sort of 3D image selection interface.

A short specification would be this: we have a set of photos (a few thousand for example), out of these we select a random number (for example 500) and display them in a sphere. The images always face the camera and the user can interact with this sphere in a multi-touch way. To make it look nicer the images will be placed on the sphere by using image features such as hue or luminosity. The user will be able to rotate or resize the sphere and will select images that are relevant or non relevant to his search. Then the images will be re-sorted and the whole process repeats.

My first test was creating some numbered images (see the PHP Script) and position them randomly in a sphere shape. Spherical Coordinates are specified by 3 coordinates: the radius, the azimuth angle and the elevation angle. Since I want to use only the surface of the sphere the radius will be constant, which means I will need 2 circular features to order the images by. For the first test I used random angles:

As a second step I decided to use the HUE angles as specified by Frank Preucil to use for his famous hue circle. This proved to be a very nice choice because it is circular and you can see the difference on the screen:

Then I tried other features. Some very interesting options were general line features (for example by using a Gabor Filter), brightness, intensity and others. Unfortunately none of them is circular and they were challenging to implement. Due to the looks of it (below an example of a sphere using hue as azimuth angle and intensity as elevation angle) and the short time available, I decided to scrap them and use random as the elevation angle.

now that this was decided I needed to go on with the Gesture implementation…