Bayes

Delaunay

Finger

Homography

Membrane

Multi Cam

Pong

Pool

Robot

Skull

Spykee

Stereo

Wing

StereoVision

(using C, GTK, OpenCV and OpenGL)
Return
The project aim is about 3D reconstruction using stereovision.
What is the stereovision ?
   The stereovision is able to reconstruct a scene from differents points of view, for instance, the human vision.


left image

right image

3D result


I used several image processing method to produce this result:
  1. Gamma correction

    Normally, the intrisic parameters of both camera are equivalent..in theory. Actually, there is some differents between both pictures (right and left).
    I used the Gamma parameter correction.
    Right Image
    Original images Corrected images
    Left Image
  2. Principal Composant Analysis (PCA)

    I implemented algorithms which work with gray images. I need to convert color images into gray images. Instead of use a weighted average (informations lost), I used PCA, such as :

    This method provides a gray image keeping the image signification.
    Original image.
    (R=127,G=127,B=0)
    Simple weighted
    average image.
    OpenCV weighted
    average image.
    PAC result image.
    The PAC on a research picture :

    We cannot see a big difference between resuts, except if we see the desk lamp, there is more constrast with the background using PAC than using a simple method.

    At this point, we adjust the intrinsic parameters in the pictures couple. Now, we have to adjust the extrinsics parameters, to do it, I used a geometrical projection.
  3. Image Normalisation

    Using this projection :
    We can produce a projection from the stereoscopic couple, such as :
    This projection means the epipolar lines are parallel into the couple.
    To produce those epipolar lines, I used a «corner tracker» (provide by OpenCV based on the Lucas-Kanade Method) to find strong points into the images. From those points, I was able to determine epipolar lines using OpenCV.
  4. «Corner Tracker»

    Right image Left image
    The OpenCV algorithm follows strong corners from the right image to the left image.
  5. Stereovision Correlation algorithm

    The correlation principle :
    This part is based on the triangulation :
    «the farther objects are, the less they move and the closer objects are, the more they move».

    I can search pixels using correlation, such as :


    I was able to generate disparities map :
    As we can see, it needs some improvements.
  6. Improvements method

    The main improvement that I program is a method based on the Latecki compresison :
  7. 3D Map Creation

  8. To be continued...

    The dynamic vision...
  9. The interface

    To test faster our algorithms and methods, I developped a friendly interface in GTK+.

Some stereoscopic pictures :