What is Stereovision?

Stereovision consists in using 2 different 2D views of the same scene to recreate the depth of the scene. Stereovision can be used to give the user the ability to "see" in 3D, this is what is done in 3D-movies where you have to wear polarised glasses. The goal of this project is not to render stereoscopic images but to create 3D objects from a set of images provided by the user.

What is binocle ?

Binocle is the final year project I worked on when I was at ESIEA. It's an application that reads a set of 2 images provider by the user (as well as the position and orientation of the cameras used to produce those images) and creates a VRML object from them . Initially the project also used another approach to scan 3D object : the computer controls a rotating disc and a laser pointer. The laser point is tracked with a webcam and the object is rotated. The results obtained with the process were uite good, but it involved using special hardware, and it was an ugly MFC application, so it is not included here. The software only process doesn't give good results yet, but offers more flexibility. I try improving Binocle from time to time, even if it doesn't give acceptable results yet, it is a good way to learn new things.

How does it work ?

First, we read 2 pictures and the 3D coordinates of the cameras who produced them Then, for a given pixel on image A, we must find its stereo-correspondant on the image B. A single point of the scene has 2 different projections on image A and image B. Finding those 2 points is called the pairing. Then, we can get the depth of the 2D point on image A thanks to the position of the stereo-correspondant on image B. To achieve this, we are going to use some properties of the epipolar geometry :

Epipolar Geometry

It allows us reducing the number of stereocorrespondant for the point p1. In theory, we could pair every point f image A to points of image B. unfortunately, in practice each point of an image doesn't have a unique color and is not enough to identify it. So we need to be able to find some unique point, some landmarks on image A, that will be easily found on image B. For example we can do a edge detection to make the points much more identifiable. Coupled with the epipolar geometry it allows us reducing the number of potential stereo-correspondant points to a reasonable amount. Once we paired 2 points we can compute the 3D coordinates of the associated "real world" point by using the position and the orientation of the cameras. If the result is not consistent, we can drop the pairing and look for another stereo-correspondant.

Binocle Steps